これは、パラメーター化されたメソッドに関するこの前の質問の拡張です。同じ本を読んでいます。前の質問の例の後、著者は
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 のサブタイプを渡すことができないのはなぜですか?