Ver destacados

🔻 Java: De tu interés

Cómo utilizar tipos genericos en Java

En este tutorial se ve cómo utilizar tipos genéricos en Java, para ello se facilitan 2 ejemplos, el primero de una clase genérica y el segundo de una función genérica

Cómo hacer una API REST con SpringMVC en Java

Breve explicación de una API REST con los métodos get y post en java usando SpringMVC

Google Maps API con Android Studio

Aquí presentamos la iniciación para usar las librerías y métodos incluidos en la interfaz de desarrollo de aplicaciones de Google Maps dirigido a desarrollo en Android nativo (JAVA y XML)

Construcción de JSON y XML en Java

En este tutorial estaremos viendo las herramientas para que podamos utilizar cualquiera de los dos formatos y así no limitarnos, por ello veremos cómo atacar la construcción tanto de JSON como XML en nuestras aplicaciones escritas en Java.

Programación Multitarea o Multihilos con Java

Explicando a fondo en qué consiste la multitarea y multihilos con el lenguaje de programación Java y ejemplos practicos.

Hacer cliente para servicios web en Java

En este tutorial veremos cómo hacer algunos clientes de servicios web utilizando Java, donde adicionalmente veremos algunos temas relacionados a las interacciones con las redes de forma general.

Trabajando con Bases de Datos en Java

En este tutorial veremos como podemos trabajar haciendo las diferentes conexiones a Bases de Datos desde el lenguaje de programación Java, con ello lograremos dotar de mayor versatilidad a nuestras aplicaciones y así poder alcanzar objetivos más grandes.

Cómo utilizar tipos genericos en Java

En este tutorial se ve cómo utilizar tipos genéricos en Java, para ello se facilitan 2 ejemplos, el primero de una clase genérica y el segundo de una función genérica
Escrito por
18.2K Visitas  |  Publicado jul 28 2016 10:36
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


Hoy vamos a ver cómo usar los tipos genéricos en Java. Es algo interesante, ya que nos va a permitir escribir funciones que trabajen cualquier tipo, dará igual si pasamos enteros, cadenas, decimales, etc. Java también nos permitirá crear clases genéricas, no solo funciones.

 

Nota
Los genéricos no se pueden utilizar con tipos primitivos, como puede ser int, char, etc.

 

Vamos a ver un par de ejemplos, primero una clase genérica y por último una función, los ejemplos son bastante sencillos para que sean más fáciles de comprender.

 

 

1. Clase genérica en Java


Lo primero que veremos es el código completo, y debajo lo explicaremos brevemente por si no se entiende el código.
public class ClaseGenerica <T>{                     
    private T elemento;

    public ClaseGenerica(T e){
        elemento = e;
    }

    public T getElemento(){
        return elemento;
    }

    public static void main( String args[] )    {
        ClaseGenerica<Integer> cg1 = new ClaseGenerica<>(1);
        System.out.println("cg1 >> "+cg1.getElemento());
        ClaseGenerica<String> cg2 = new ClaseGenerica<>("Hola");
        System.out.println("cg2 >> "+cg2.getElemento());
    } 
}
Veamos lo primero la declaración de la clase, puedes apreciar que después del nombre de la clase tenemos <T>, nos indica que es una clase genérica, T podrá ser un String, un Integer, etc. Se sustituirá por un tipo real cuando llegue el momento.

 

Tenemos una variable llamada elemento, que es del tipo T (es decir genérico). En el constructor rellenaremos está variable con el dato que nos pasen, también del tipo T lógicamente.

 

Antes de llegar al main creamos una función para obtener el elemento, por eso retorna un tipo T, no haría falta está clase, tal y como está el código podríamos llamar al elemento directamente, pero para que veas el tipo de devolución de la función no está de más.

 

Dentro del main lo único que haremos es crear 2 objetos de esa clase, el primero de tipo Integer y el segundo de tipo String y mostramos el elemento para ver que funciona correctamente.

 

Si compilamos y ejecutamos el código veremos lo siguiente:

 

 

 

 

2. Función genérica en Java


Vamos ahora a pasar a ver una función genérica, al igual que antes lo primero que se enseña es el código completo y posteriormente se explica.
import java.util.ArrayList;

public class Genericos{                     
   public static <T> void show(ArrayList<T> entrada)   {              
         entrada.stream().forEach((elemento) -> {
	        System.out.print(elemento+" ");
        });
         System.out.println("\n");
    }

    public static void main( String args[] )    {

        ArrayList<Integer> list1 = new ArrayList<>();
        for(int i = 1; i <= 6; i++){
            list1.add(i);
        }

        ArrayList<String> list2 = new ArrayList<String>() {{
            add("this");
            add("is");
            add("a");
            add("test");
        }};

        System.out.println( "--- Usando ArrayList de enteros ---" );
        show(list1); 

        System.out.println( "--- Usando ArrayList de cadenas ---" );
        show(list2);
    } 
}
Tenemos una función llamada show que recibe un ArrayList de cualquier tipo y lo recorrerá mostrando sus datos. Dentro del main creamos dos ArrayList, uno de tipo Integer y otro de tipo String, los inicializamos con unos datos para hacer la prueba. Y por último llamamos a la función show por cada ArrayList para comprobar que funciona correctamente.

 

Si compilamos y ejecutamos vamos a ver lo siguiente:

 

 

Aquí termina el tutorial, has podido comprobar lo fácil que es en Java utilizar datos genéricos, y así poder tener clases que pueden ser reutilizadas para diferentes tipos de objetos. Por ejemplo, si queremos tener un código que almacene facturas y otro que almacene los datos de los clientes, podemos echar mano a los genéricos, teniendo únicamente una clase.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!