1
因此,假设我们有这两个类。JAVA为什么我在分配这些变量时遇到类型错误(T extends Comparable <T>)
public class Main<T extends Comparable<T>> {
public List<T> toList(T t){
Node n = new Node();
n.value = t; //This assignment1 gives no issues.
List<T> list = new List<T>();
list.add(n.value); //This assignment2 gives a type error.
return list;
}
}
class Node <T extends Comparable<T>> {
T value = null;
}
那么,为什么分配1经历没有一个类型错误,而assignment2给了我以下错误:
在列表中添加(T)不能应用于(java.lang.Comparable的)
它消失了,当我做:
list.add((T)n.value);
但我想先了解原因弄清楚,如果上述方案是正确的。
编辑:现在,我应该指定使用这些类的代码是Integer对象。所以,我作为开发人员可以假设T类型是相同的。但我不确定代码是否有一些可以在转换过程中更改值的基础例程。
它的工作原理,谢谢!因此,基本上,编写节点将使编译器检查类声明Node >中的T是否与Main >中的T相同? –
Potatoman
是的,这是正确的。 –