public static void append1(Collection<? super a1> my_array, int n) {
my_array.add(new c1());
my_array.add(new b1());
my_array.add(new a1());
}
我的数组实际上是超类型的。所以你可以添加那个超类的任何子类。 然后一个问题出现在你身上,那么泛型有什么用呢?这有什么用 super 在那里?为了回答这个问题,当您从另一个方法调用该方法时,将使用is。在那里,你将能够通过名单,这是超a1只。下面将给出错误。
public static void main(final String[] args) {
append1(new ArrayList<b1>()); // compilation error as b1 is not super to a1
append1(new ArrayList<c1>()); // compilation error as c1 is not super to a1
}
1条答案
按热度按时间qc6wkl3g1#
超类引用可以容纳子类的对象。
为了更好地理解,请考虑您没有使用泛型。
你应该同意以上代码的有效性。就像我们创建超类的集合一样,我们将被允许向其中添加任何子类对象。
泛型也在发生同样的事情。当您在下面声明:
我的数组实际上是超类型的。所以你可以添加那个超类的任何子类。
然后一个问题出现在你身上,那么泛型有什么用呢?这有什么用
super
在那里?为了回答这个问题,当您从另一个方法调用该方法时,将使用is。在那里,你将能够通过名单,这是超a1只。下面将给出错误。