考虑官方帮助中的示例:
public class Node<T>{
private T data;
public Node(T data){ this.data=data; }
public void setData(T data){
System.out.println("Node.setData");
this.data=data;
}
}
public class MyNode extends Node<Integer>{
public MyNode (Integer data){ super(data); }
public void setData (Integer data){
System.out.println("MyNode.setData");
this.data=data;
}
}
public class MyClass{
public static void main(String[] args){
Node n = new MyNode(5);
n.setData(new Object());//ok
}
}
是什么意思
Node n= new MyNode(5);?Node n是对原始类型的引用,但我将其描述Node<T>为泛型类。原始类型是否是所有Node通用类型的超类型?如果我们定义对原始类型的引用,那么泛型类型编译器在哪里不对类型进行检查,而是在哪里开始类型擦除?编译器默认匹配的语句是错误的,因为它不是.Node<T>TNode nNode<T>Node<T>TObjectNode<Object>Node<Integer>编译器的类型参数是什么
T?Node<T>编译器是否T只考虑作为引用类型,但他不知道关于 的描述T?