Además de la cuestión del tipo de borrado - lo que hace que esto sea imposible, en todo caso - que simplemente no puede garantizar que un T
ha expuesto, constructor sin argumentos!
La solución tradicional es pasar alrededor de objetos de fábrica que proporcionan métodos que se pueden utilizar para obtener objetos T
. Un ejemplo simple sería
interface Factory<T> {
T create();
}
y luego su clase puede conseguir un Factory<T>
y llame create()
en él para obtener más T
s. Los ejemplos más sofisticados pueden requerir argumentos adicionales para un método create
, por ejemplo, o sobrecargas.
Las soluciones menos atractivas incluyen la reflexión explícita, que pasa alrededor de los objetos Class<T>
. Por ejemplo, ArrayList.class.newInstance()
devuelve un ArrayList
bruto recientemente construido. Tiene que pasar explícitamente alrededor del objeto Class
, y el enfoque basado en la reflexión es más lento que un constructor normal o un objeto de fábrica (aunque la velocidad de reflexión ha mejorado últimamente). También dependes de la clase que expone un constructor no-arg, que no siempre es el caso. Se puede hacer que funcione, pero nunca es lo que yo llamaría "agradable".
(Dicho esto, como referencia, hay indicios de que la situación puede cambiar algo en Java 8 con el Proyecto Lambda y amigos.)
posible duplicado de [Crear instancia de tipo genérico en Java?] (http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java) – pingw33n
tiene razón. completamente pasado por alto que – nux