具有上限和下限的Java泛型通配符

时间:2017-12-27 20:49:01

标签: java wildcard bounds

假设C类扩展B,B扩展A.

对于给定的功能:

public static void add(List<? extends B> list) {
    list.add(new A()); //Doesn't compile
    list.add(new B()); //Doesn't compile
    list.add(new C()); //Doesn't compile
}

为什么添加任何元素都无法实现?我明白了

List<? extends B> list

作为B或C类型的元素列表。

对于超级界限:

public static void add2(List<? super B> list) {
    list.add(new A()); //doesn't compile
    list.add(new B());
    list.add(new C());
}

我理解

List<? super B> list

作为包含A或B类型元素的列表。

我不明白它是如何运作的:/

0 个答案:

没有答案