这是上一个关于参数化方法的问题的扩展。我正在读同一本书。在上一题的例子之后,作者改进了
BinaryTree<T extends Comparable<? super T>>
通过添加以下构造函数再次上课(这次他真的做到了)
public <E extends T> BinaryTree(E[] items) {
for(E item : items) {
add(item);
}
本着上一个问题的精神,我尝试了这个构造函数:
public BinaryTree(T[] items) {
for(T item : items) {
add(item);
}
}
并且示例代码无法使用我的构造函数编译:
public static void main(String[] args) {
Manager[] managers = { new Manager("Jane", 1), new Manager("Joe", 3), new Manager("Freda", 3), new Manager("Bert", 2), new Manager("Ann", 2), new Manager("Dave", 2) };
BinaryTree<Person> people = new BinaryTree<>(managers);
}
更改上一个问题中的 add() 方法和更改此构造函数之间有什么区别?为什么我不能在构造函数中传递 T 的子类型?