简单的Java泛型问题:我有两个类-一个使用泛型定义其类型,另一个使用扩展该类以提供具体类型。
public class Box<Item> {
...
}
public class Toolbox extends Box<Tool>{
...
}
鉴于Toolbox扩展了Box,并提供了工具作为通用占位符的实际类型,所以我认为应该可以执行以下操作:
Box<Tool> box = new Box();
Toolbox toolbox = box;
但是,这似乎导致类型不匹配。为什么是这样?
最佳答案
Box<Item>
是未绑定的通用类型。 Box<Tool>
是该相同泛型的特定绑定版本。 Toolbox
是Box<Tool>
的子类,因此是Box<Tool>
的离散类型。