公式ヘルプの例を考えてみましょう:
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
のジェネリック型のスーパータイプですか? raw typeへの参照を定義すると、ジェネリック型コンパイラは型チェックを行わず、型消去を開始したというのは本当ですか? のスーパータイプではないため、コンパイラがデフォルトで一致するステートメントは間違っています。Node<T>
T
Node n
Node<T>
Node<T>
T
Object
Node<Object>
Node<Integer>
コンパイラの型パラメータとは何
T
ですか?Node<T>
コンパイラT
は参照型と見なしているが、 の記述については知らないというのは本当T
ですか?