任何人都可以解释这两者是如何编译的以及它是如何工作的?
List<? super String> list = new ArrayList<Object>();
据我所知,它的实现需要是String列表还是String为超类的对象列表?我错过了什么吗?
答案 0 :(得分:23)
不(即是的,你错过了一些东西:-)。 <? super String>
是String
的超类的任何类(包括String
本身)。 (在这种情况下,唯一合适的类是Object
。)
您所描述的内容为<? extends String>
(在此特定情况下,String
为final
时不会非常有用,因此它没有子类。)
答案 1 :(得分:3)
<? super String>
接受String
和任何超类。
不要混淆:
<? extends String>
接受String
和任何子类(其中String
之后没有任何<{1}} {/ 1}}。
答案 2 :(得分:0)
由于String
是final
,因此它不能成为任何其他类的超类。 List<? super String>
表示任何类型为String
的超类。实际上,Object
是String
的超类(实际上是任何类)。