Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Planteamiento con Generics Java

Buenas tardes,

Quiero hacer un código que haga lo siguiente: recupere listados de una pantalla, y mapee los campos a mis objetos Java.

El problema esta, en que el metodo recuperarListados(...) no siempre devolverá el mismo tipo de listado, ni estos listados tendran siempre los mismos campos, os pongo un ejemplo de tipo de listado con sus campos:

Listado A
Nombre Apellidos Titulacion Edad

Listado B
DNI Direccion Empresa

Listado C
Solicitud Referencia Porcentaje Documentos Expedido

Bueno, una vez visto los ejemplos, lo que me gustaría hacer es "no repetir" el código que recupera estos listados, sino que con el mismo método me devuelva un listado, que luego usaré según el tipo que sea, es decir:

public ListadoGenerico<T> recuperarListados (....);

El metodo recuperarListados, además de las operaciones oportunas para recuperar los campos del listado que se trate, tendrá una llamada a un metodo mapear, que sera distinto para cada listado : mapearListadoA, mapearListadoB, mapearListadoC.

Tengo dudas en cómo usar los génericos para devolver el dato de retorno en recuperarListados,si hacer algo asi List<T> o crear una clase generica MiListado que dentro tenga un atributo List<T>.
Estuve pensando en Herencia e interfaces pero no lo veo adecuado, que piensan vosotros? Cual es la forma más agil de hacerlo?

Finalmente me gustaria hacer algo asi:

List <ListadoA> miLista1 = recuperarListados(....);
List <ListadoB> miLista2 = recuperarListados(....);

Podrían darme ideas para plantear el problema?
Apenas he usado génericos por lo que me pierdo un poco a la hora de hacer el mejor planteamiento.

Muchas gracias por adelantado.

noviembre 2, 2013 | Unregistered Commenteryomisma

Creo que deberías empezar por leer atentamente este tutorial.

http://docs.oracle.com/javase/tutorial/java/generics/

Contiene numerosos ejemplos que resuelven lo que planteas.

noviembre 2, 2013 | Registered Commenterchoces

Gracias, he estado mirando bastante de la documentación que me enviaste.

Ahora tengo otro problema, cuando en un método declaro que devuelve un valor List<T>, eclipse dice que no reconoce T, me da la opción de añadir <T> List <T> como valor devuelto, pero entiendo que esa primera <T> seria porque voy añadir parametros de tipo T al método, en mi caso no es así, no necesito parámetros. ¿Cómo solucionais vosotros este error?

Muchas gracias.

noviembre 3, 2013 | Unregistered Commenteryomisma

Publica el método completo donde te lanza ese error.
Es bastante difícil adivinar lo que sucede con un código que no se ve.

noviembre 3, 2013 | Registered Commenterchoces

Por ejemplo:

public <T> List<T> getLista() {
return new ArrayList<>();
}

El método no usa parámetros, y devuelve una List genérica de la clase T

noviembre 4, 2013 | Registered Commenterchoces