在学习 Java 通配符时,我发现自己对这个主题有误解,所以。
Upper Bound
允许我只读泛型类的成员Lower Bound
允许我写信给成员,但前提是它是类型下限
List<? extends Vehicle> vehicleList = new ArrayList<Car>();
vehicleList.add(new Scooter()); // Compile-time Error!
编译器不会让我们在这里写任何东西,因为他不能确保 list 的元素是正确的类型(供以后阅读)。
List<? super Car> carList = new ArrayList<Car>();
carList.add(new Car()); // Ok
carList.add(new Vehicle()); // Compile-time Error
发生这种情况是因为编译器可以确保最低类型始终是 Car。然后我们只能通过Car。我对吗?