Breve introducción a genéricos en Java

Tiempo estimado de lectura: 10 min.

Los genéricos son una característica de varios lenguajes de programación que permiten especificar tipos generales. Los métodos genéricos permiten especificar, con un solo método, un conjunto de métodos relacionados; por otro lado, las clases genéricas permiten especificar, con una sola declaración de clase o interface, un conjunto de tipos relacionados.

Un ejemplo será mas claro:

 

public class Coleccion{

     ArrayList lista;

 

    public Coleccion(){

     lista = new ArrayList();

   }

 

   public <T> void anadirTres(T uno, T dos, T tres){

lista.add(uno);

lista.add(dos);

lista.add(tres);

   }

 

Nótense los elementos en negritas. Todos las declaraciones de métodos genéricos tienen una sección de parámetro de tipo delimitada por paréntesis angulados que precede al tipo de retorno del método(<T> en este caso). Hay que señalar que se puede usar mas de un parámetro de tipo en un solo método, y que no es forzoso el uso de la letra T, sino que puede usarse cualquier letra que se desee. Los parámetros de tipos también son conocidos como variables de tipo. Estos son identificadores que especifican un nombre de tipo genérico.

Los parámetro de tipo pueden usarse en cualquier lugar del método(tipo de retorno, parámetros, cuerpo del método).

Finalmente, cuando se invoca un método genérico simplemente se sustituyen los parámetros de tipo por un tipo concreto. Hay que señalar que los métodos y clases genéricos solo aceptan tipos por referencia, por lo que hay que comprender el Boxing y Unboxing. En el siguiente ejemplo se invoca el método declarado anteriormente para añadir tres Enteros a un arrayList:

 

public static void main(String args[]){

 

Coleccion col = new Coleccion()

col.anadirTres(1,2,3);

 

}

 

También es posible declarar clase genéricas declarando el parámetro de tipo después del nombre de la clase, después de lo cual puede usarse en cualquier lugar de la clase:

 

public class clase<T>{

public void anadirTres(T uno, T dos,T tres){

lista.add(uno);

lista.add(dos);

lista.add(tres);

}

}

 

Hay algunos aspectos técnicos que tomar en cuenta para el mejor uso de los genéricos, como el borrado de tipos o la forma en que el compilador procesa la sobrecarga de métodos, , Wildcards y RawTypes, las cuales se discutirán en futuras entradas.

 

Fuentes:

Java, How to Program

Deitel & Deitel

Deitel,9th Ed.

——

Java Generics and Collections

Naftalin & Wadler

O’Reilly, First Ed.

 

Advertisements
Breve introducción a genéricos en Java

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s