java - 泛型 - 向泛型类提供具体类型时类型不匹配

标签 java generics inheritance type-mismatch

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

public class Box<Item> {
    ...
}


public class Toolbox extends Box<Tool>{
    ...
}

鉴于 Toolbox extends Box 提供了一个 Tool 作为通用占位符的实际类型,我认为应该可以做这样的事情:

Box<Tool> box = new Box();

Toolbox toolbox = box; 

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

最佳答案

这不是一个真正的泛型问题。您的问题是您将一个不太具体类型的对象分配给一个更具体类型的变量。

如果您尝试将对象分配给字符串变量,即使字符串扩展了对象,您也会遇到同样的问题。

但是,您应该能够编写 Box<Tool> box = new Toolbox();具有给定的类结构。恰恰相反。

关于java - 泛型 - 向泛型类提供具体类型时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873862/

相关文章:

inheritance - 结合 seam 3 和 JSF2 复合组件 valueChangeListener 评估 El 表达式的问题

c++ - 在 SWIG 中处理来自 self 的特殊实例的类继承

swift - 了解 Swift 索引、范围、距离

Java 泛型 : Array containing generics

java - 哪个 jar 和 spring 版本<mvc :resource> come?

java - 从一个Mysql数据库插入到另一个数据库

c# - 使用 C# 3.0,如何使用泛型集合编写基于接口(interface)的代码?

Python 修饰类中的方法和继承

java - long 和 double 值的原子读写

java - AEM 6.1 Sightly Java 类不会在构建时更新