Clases y tipos genéricos
martes, octubre 23, 2012 at 5:34PM
jcarmonaloeches in genericos y colecciones, ocjp

Mejor con un ejemplo:

class ClaseGenerica<T> {
T obj;

public ClaseGenerica(T o) {
obj = o;
}

public void classType() {
System.out.println("El tipo de T es " + obj.getClass().getName());
}
}

public class MainClass {
public static void main(String args[]) {
// Creamos una instancia de ClaseGenerica para Integer.
ClaseGenerica<Integer> intObj = new ClaseGenerica<Integer>(88);
intObj.classType();

// Creamos una instancia de ClaseGenerica para String.
ClaseGenerica<String> strObj = new ClaseGenerica<String>("Test");
strObj.classType();

}
}

Unos apuntes:

- T es el tipo genérico que será reemplazado por un tipo real.
- T es el nombre que damos al parámetro genérico.
- Este nombre se sustituirá por el tipo real que se le pasará a la clase.

El resultado será el siguiente:

El tipo de T es java.lang.Integer
El tipo de T es java.lang.String

Hay que tener en cuenta que los generics de java solo funcionan con objetos. El código siguiente nos mostrará un error:

ClaseGenerica<int> myOb = new ClaseGenerica<int>(53); // Error, can't use primitive type

Existen una serie de convenciones para nombrar a los genéricos:

E – Element (usado bastante por Java Collections Framework)
K – Key (Llave, usado en mapas)
N – Number (para números)
T – Type (Representa un tipo, es decir, una clase)
V – Value (representa el valor, también se usa en mapas)
S,U,V etc. – usado para representar otros tipos.

El artículo original se puede encontrar en este post: http://jonsegador.com/2012/10/clases-y-tipos-genericos-en-java

NOTA: artículo publicado por jonseg

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.