Javaワイルドカードについて学んでいるときに、このテーマについて誤解していることに気づきました。
Upper Bound
ジェネリック クラスのメンバーを読み取り専用にすることができますLower Bound
メンバーへの書き込みを許可しますが、それが型の下限である場合のみです
List<? extends Vehicle> vehicleList = new ArrayList<Car>();
vehicleList.add(new Scooter()); // Compile-time Error!
コンパイラは、リストの要素が正しい型であることを保証できないため、ここに何も記述できません (後で読むため)。
List<? super Car> carList = new ArrayList<Car>();
carList.add(new Car()); // Ok
carList.add(new Vehicle()); // Compile-time Error
これは、コンパイラが最下位の型が常に Car であることを保証できるために発生します。そして、Carのみを渡すことができます。私は正しいですか?