简单的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>是该相同泛型的特定绑定版本。 ToolboxBox<Tool>的子类,因此是Box<Tool>的离散类型。

07-28 03:28
查看更多