-1
BがAのサブクラスであることを見て、メソッドのリストにB型の要素を追加できますが、同じメソッドにB型のリストを渡せないのはなぜですか?Javaのジェネリックについての混乱
public class Test {
private static void print(List<A> list) {
list.add(new B());
}
public static void main(String[] args) {
List<B> list = new ArrayList<>();
list.add(new B());
print(list); //does not compile
}
}
class A {}
class B extends A {}
class C extends B {}
しかし、あなたは 'void print(List super B>)'を宣言でき、それはうまくいくでしょう。 –
@AndyTurnerええ、あなたはそれを行うことができます。しかし 'C'インスタンスを使いたい場合は複雑になることがあります。もちろんそれが意図されていない(すなわち、Bを単離する) – nafas