list - 如何将列表从子类泛型转换为父类泛型?

标签 list java downcast

我正在修改开放的 JDK 以添加功能,我已经遇到过两次这种情况,但没有好的解决方案。

有一个名为 JCStatement 的类延伸JCTree .

问题:我想转换 List<JCStatement>进入List<JCTree> .

很明显,一个类可以引用它的扩展之一,但是当我将它放在列表中时,它就不起作用。

我用过:(List<JCTree>)((List<?>)params) tocast,它有效,但不是建立在 ant 之上的。 IDE 给我以下警告:

Type safety: Unchecked cast from List<capture#1-of ?> to List<JCTree>

所以必须以某种方式解决这个问题。

感谢任何帮助。

最佳答案

您无法进行此转换。

如果你施放 List<JCStatement> 会发生什么到 List<JCTree>然后将 JCTree (非 JCStatement)对象添加到该列表中?它打破了List<JCStatement>类型安全。

关于list - 如何将列表从子类泛型转换为父类泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10803005/

相关文章:

java - Java 中的强制向下转换

java - 如何将 ArrayList<Object> 转换为 ArrayList<String> 或 ArrayList<Timestamp>?

C# 列表和枚举器的属性

python - 在 Python 中创建具有重复值的整数列表

java - 创建和运行 Java 小程序

java - 从 Java servlet 下载文件给出 null

java - 如何在没有 instanceof 或 getClass 的情况下访问类特定方法

list - 检查列表是否包含重复项的谓词

java - 简化 do-while 循环

向下转换时出现 Swift 错误 'Any'