gpt4 book ai didi

java - 泛型下界 ('super' ) 问题?

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:09 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
java generics super keyword

我无法将我的知识与下面的示例程序联系起来。请看下面的示例程序,然后我的疑虑就在那个程序下面。

import java.util.*;
class A { }
class B extends A { }
class C extends B { }

public class sampleprog {

public static void main(String[] args) {

List<? super A> list1 = new ArrayList<A>();
list1.add(new A());//valid. ok
list1.add(new B());//valid, why? it is not super to A?
list1.add(new C());//valid, why? it is not super to A?

List<? super B> list2 = new ArrayList<A>();
list2.add(new A());//not valid. why? it is also super to B!!!
list2.add(new B());
list2.add(new C());

List<? super C> list3 = new ArrayList<C>();
list3.add(new A());//not valid, why? It is super to A so should be valid!!!
list3.add(new B());//not valid, why? It is super to A so should be valid!!!
list3.add(new C());
}
}

我的疑问:- 据我所知? super T表示您可以添加的任何类都是 T 的 super 类但这里的输出不同?甚至子类也成功添加,这完全令人困惑。- 输出与列表初始化(List<? super C> list3 = new ArrayList<C>();)没有区别。在此初始化中,我分配了 A 列表或 B , 输出是一样的!

请解开我的疑惑

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com