我有一些關於橋樑方法創建的問題。我們可以將橋技術用於協變覆蓋。現在考慮來自官方幫助的示例:創建橋樑方法
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
有兩種方法:setData(Integer)
和setData(Object)
,其中最後一個從Node
繼承。當我們撥打setData(new Inetegr(5))
時會撥打setData(Integer)
。如果我們寫Object o= new Integer(5); setData(o);
那麼將調用setData(Object)
。這不是真的。 所以有兩個問題:
- 我明白導入橋接方法正確的原因嗎?
- 創建橋樑方法的必要條件和足夠的條件是什麼?
你好 - 也許你會從這裏閱讀答案大大受益:http://stackoverflow.com/questions/5007357/java-generics-bridge-method – Meesh