我有这个通用类
public class BinTree<T> {
T value;
List<BinTree<? extends T>> branch = new ArrayList<BinTree<? extends T>>();
public BinTree(T v){ value = v;}
public void addBranch(BinTree<? extends T> tree){
if(branch.size() == 2){
System.out.println("You can only have two childs");
}else{
branch.add(tree);
}
}
public BinTree<? extends T> getBranch(int n){ return branch.get(n);}
}
及其在这里的实现
public static void main(String[] args){
BinTree<Number> firstBinTree = new BinTree<Number>(0);
firstBinTree.addBranch(new BinTree<Integer>(5));
firstBinTree.addBranch(new BinTree<Double>(6.5));
Number o = firstBinTree.getBranch(0).value;
firstBinTree.getBranch(0).addBranch(new BinTree<Integer>(6));
}
但是这条线
firstBinTree.getBranch(0).addBranch(new BinTree<Integer>(6));
不允许我添加另一个整数类型的 BinTree。这是为什么?我在我的 addBranch 方法中声明它可以添加任何类型,只要它是 Type 的子类(在这种情况下为数字),它将被添加到列表中,但我为什么不能?整数不是数字的子类吗?