bridge メソッドの作成についていくつか質問があります。共変オーバーライドにブリッジ手法を適用できます。公式ヘルプの例を考えてみましょう:
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;
}
}
bridge メソッドは作成しません。したがって、実行時にクラスMyNode
には 2 つのメソッドがあります。setData(Integer)
とsetData(Object)
last は から継承されNode
ます。私たちが呼んでいるときは、 が呼び出さsetData(new Inetegr(5))
れsetData(Integer)
ます。書くObject o= new Integer(5); setData(o);
とsetData(Object)
呼び出されます。それは本当ではない。2つの質問:
- ブリッジ工法を導入する理由を正しく理解していますか?
- ブリッジ工法作成の必要十分条件とは?