我有一些关于桥梁方法创建的问题。我们可以将桥技术用于协变覆盖。现在考虑来自官方帮助的示例:创建桥梁方法
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