泛型 - 在为泛型类提供具体类型时类型不匹配

Jay*_*ark 1 java generics inheritance type-mismatch

简单的Java泛型问题:我有两个类 - 其中一个使用泛型来定义它的类型,另一个扩展这个类提供一个具体类型.

public class Box<Item> {
    ...
}


public class Toolbox extends Box<Tool>{
    ...
}
Run Code Online (Sandbox Code Playgroud)

鉴于Toolbox扩展Box提供了一个工具作为通用占位符的实际类型,我本以为应该可以这样做:

Box<Tool> box = new Box();

Toolbox toolbox = box; 
Run Code Online (Sandbox Code Playgroud)

但是,这似乎导致类型不匹配.为什么是这样?

Mic*_*ers 6

这不是真正的泛型问题.您的问题是您要将特定类型较少的对象分配给更具体类型的变量.

如果您尝试将Object分配给String变量,即使String扩展了Object,也会遇到同样的问题.

但是,您应该能够Box<Tool> box = new Toolbox();使用给定的类结构进行编写.只是不是相反.