If I have an abstract class like this:
public abstract class Item
{
private Integer value;
public Item()
{
value=new Integer(0);
}
public Item(Integer value)
{
this.value=new Integer();
}
}
And some classes deriving from Item like this:
public class Pencil extends Item
{
public Pencil()
{
super();
}
public Pencil(Integer value)
{
super(value);
}
}
I have not understood why I can't call the constructor using a generic:
public class Box <T extends Item>
{
T item;
public Box()
{
item=new T(); // here I get the error
}
}
I know that is possible to have a type which hasn't a constructor, but this case is impossible because Pencil has the constructor without parameters, and Item is abstract.
But I get this error from eclipse:
cannot instanciate the type T
I don't understand why, and how to avoid this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…