Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En Java, cuando definimos una nueva clase, debemos conocer el tipo de dato
con el que trabajaremos. Si queremos realizar una operación específica dentro de
esta nueva clase, sea cual sea el tipo de datos que va a recibir, podemos hacer
uso de los tipos genéricos. Este tipo genérico asumirá el tipo de dato que
realmente le pasaremos a la clase.
Ejemplo:
class ClaseGenerica<T> {
T obj;
public ClaseGenerica(T o) {
obj = o;
}
}
}
Notas:
1 El tipo de T es java.lang.Integer
2 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:
1
Existen una serie de convenciones para nombrar a los genéricos:
Veamos cómo se usan los Java Generics o llamadas simplemente clases Genéricas.
Construiremos la clase Bolsa que es una clase sencilla que nos permitirá almacenar
objetos de varios tipos.
import java.util.ArrayList;
import java.util.Iterator;
2
}
En nuestro caso vamos a disponer de dos clases con las cuales rellenar la bolsa. La clase
Golosina y la clase Chocolatina.
bolsa.add(c);
bolsa.add(c1);
bolsa.add(c2);
bolsa.add(g1);
bolsa.add(g2);
El programa funcionará correctamente, pero nos podremos dar cuenta que resulta
bastante poco amigable la estructura if /else en la cual se chequean cada uno de los
tipos a la hora de presentarlo por pantalla.
Java Generics
Para solventar este problema podemos construir una clase Genérica. Este tipo de clase
nos permitirá definir una Bolsa de un tipo concreto. Puede ser una bolsa de Golosinas o
una bolsa de Chocolatinas pero NO de las dos cosas a la vez. Esto en un principio
puede parecer poco flexible pero si nos ponemos a pensar cuando programamos
solemos imprimir una lista de Facturas o una lista de Compras no una lista mixta. Así
pues el enfoque parece razonable. Vamos a ver el código fuente y comentarlo:
4
import java.util.ArrayList;
import java.util.Iterator;
lista.add(objeto);
}else {
La clase es un poco peculiar ya que al no saber de entrada de qué tipo va a ser la bolsa
debemos declarar un tipo Genérico T a nivel de clase y que será repetido en cada
uno de los métodos que lo usen.
5
bolsa.add(c);
bolsa.add(c1);
bolsa.add(c2);
http://www.arquitecturajava.com/uso-de-java-generics/