Si tengo una clase abstracta como esto:llamar al constructor de un tipo genérico
public abstract class Item
{
private Integer value;
public Item()
{
value=new Integer(0);
}
public Item(Integer value)
{
this.value=new Integer();
}
}
Y algunas clases de artículos que se derivan de la siguiente manera:
public class Pencil extends Item
{
public Pencil()
{
super();
}
public Pencil(Integer value)
{
super(value);
}
}
no he entendido por qué no puedo llamar al constructor utilizando un genérico:
public class Box <T extends Item>
{
T item;
public Box()
{
item=new T(); // here I get the error
}
}
sé que es posible tener un tipo que no tiene un constructor, pero esta ca es imposible porque Pencil tiene el constructor sin parámetros, y Item es abstracto. Pero obtengo este error de eclipse: no puedo instanciar el tipo T
No entiendo por qué, y cómo evitar esto?
Considere el caso cuando se tiene otra clase que extiende 'Item', excepto esta clase tiene solo un constructor que insiste en al menos un argumento. –
posible duplicado de [¿Cómo puedo instanciar un tipo genérico en Java?] (Http://stackoverflow.com/questions/6916346/how-can-i-instantiate-a-generic-type-in-java) –
posible duplicar de [Crear instancia de tipo genérico en Java?] (http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java) –