Если у меня есть абстрактный класс вроде этого:
public abstract class Item
{
private Integer value;
public Item()
{
value=new Integer(0);
}
public Item(Integer value)
{
this.value=new Integer();
}
}
И некоторые классы, производные от Item, вроде этого:
public class Pencil extends Item
{
public Pencil()
{
super();
}
public Pencil(Integer value)
{
super(value);
}
}
Я не понял, почему я не могу вызвать конструктор с использованием универсального:
public class Box <T extends Item>
{
T item;
public Box()
{
item=new T(); // here I get the error
}
}
Я знаю, что можно иметь тип, не имеющий конструктора, но этот случай невозможен, потому что Pencil имеет конструктор без параметров, а Item является абстрактным.
Но я получаю эту ошибку от eclipse:
не может создать экземпляр типа T
Я не понимаю, почему и как этого избежать?