gpt4 book ai didi

java - 不能为 类型变量分配 INode 类型值。为什么?

转载 作者:行者123 更新时间:2023-12-04 05:57:10 25 4
gpt4 key购买 nike

我想知道为什么以下代码无法工作:

public static <T extends INode> List<T> cloneList(List<T> list) {
List<T> result = new ArrayList<T>(list.size());

for (T t : list)
result.add(t.clone()); <--- problem here

return result;
}
INode.clone()INode返回类型,我们知道每个 T 都必须实现 INode ,所以我很惊讶上面的代码不能编译。我上面显示的内容有任何语义问题吗?

编辑:也许是因为在编译时 Java 会删除泛型类型,然后仍然需要强制转换?编译器不能为我做到这一点吗?

EDIT2:这里是 INode :
public interface INode {
INode accept(Visitor visitor);
INode clone();
}

谢谢

最佳答案

T 是 INode 但 INode 不是 T。
所以你不能把 INode.clone() (Object or Inode) 的结果放入 T 的列表中。
这就是为什么你需要类型转换

问候

关于java - 不能为 <T extends INode> 类型变量分配 INode 类型值。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com