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)
但是,这似乎导致类型不匹配.为什么是这样?
这不是真正的泛型问题.您的问题是您要将特定类型较少的对象分配给更具体类型的变量.
如果您尝试将Object分配给String变量,即使String扩展了Object,也会遇到同样的问题.
但是,您应该能够Box<Tool> box = new Toolbox();使用给定的类结构进行编写.只是不是相反.