viernes, 23 de mayo de 2008

Uso (o no) de valores genéricos

Post Relacionado con el de Diferencias entre las colecciones List, Set y Map
Para utilizar una lista, podemos no utilizar genéricos (esto es, no definir el tipo de objetos que debe contener la lista):

List lista = new ArrayList();

...y para añadir:

lista.add(new Alumno()); //añadimos un tipo Alumno
lista.add(new String()); // añadimos un tipo String

...si queremos saber el valor de la posición cero:

Object o = lista.get(0);
Alumno al = (Alumno)o;

Si utilizamos con genéricos:

List<Alumno> lista = new ArrayList<Alumno>();

donde sólo podremos incluir y obtener objetos de tipo Alumno. Con lo que ante la instrucción de incluir un objeto de tipo String en esta lista nos daría un error de compilación:

lista.add(new String); //nos daría error
lista.add(alumno2); //sería correcto

...tampoco habría que hacer un casting si queremos obtener un determinado objeto de la lista:

Alumno al = lista.get(0);

_______________________

Si queremos recorrer una lista genérica, se puede hacer con un bucle for:

for(int i=0;i
Object o = lista.get(i);
System.out.println(o);
}

...o bien a través de un for each:

for each(Alumno al: lista){
System.out(al.getNombre());
}

________________________

También se puede emplear, en lugar de List, el comando Set:

No hay comentarios: