Quiero generar una lista genérica donde el tipo de la lista se conoce solo en tiempo de ejecución (es el tipo del objeto que crea esa lista).
Descripción completa:
Quiero implementar esta funcionalidad en una clase abstracta, por lo que conozco la clase primaria antes del tiempo de ejecución.
No sé cómo hacer eso.
Class myClass = getClass().getSuperclass();
LinkedList<myClass> list = new LinkedList<myClass>();
No funciona. ¿Algunas ideas?
Respuestas
3 para la respuesta № 1Los genéricos son en gran medida una característica de tiempo de compilación, por lo que no tiene ningún significado en este contexto.
Solo puedes escribir
List list = new LinkedList();
Generalmente prefiero ArrayList si puedes usar eso. ;)
6 para la respuesta № 2
o simplemente puedes escribir:
List<Object> list = new LinkedList<Object>();
0 para la respuesta № 3
Simplemente usar Non-Generics
Lista de arreglo
ArrayList arrList = new ArrayList();
incluso puedes usar el <?>
Pensé usando el List
Será bueno, ya que muestra el principio de "Program in Interface rather than implementation"
0 para la respuesta № 4
Otra opción sería parametrizar la clase abstracta con el tipo de la clase extendida. Esto es un poco sobre-diseñado, pero debería funcionar:
package test;
import java.util.ArrayList;
import java.util.List;
public class AbstractListHolder<T> {
private List<T> list = new ArrayList<T>();
List<T> getList() {
return list;
}
}
class ListHolder extends AbstractListHolder<ListHolder> {
void doSomething() {
getList().add(this);
}
}