谁能解释这两者如何编译以及它是如何工作的?
List<? super String> list = new ArrayList<Object>();
据我了解,它的实现需要是一个字符串列表或一个将字符串作为超类的对象列表?我错过了什么吗?
不(即是的,你错过了一些东西:-)。<? super String>
是任何属于(包括它自己)的超类的类。(在这种情况下,唯一合适的类是。)String
String
Object
您所描述的将是<? extends String>
(在这种特定情况下,它不会很有用String
,final
因此它可以没有子类)。
<? super String>
接受String
和任何超类。
不要混淆:
<? extends String>
接受String
和任何子类(其中没有任何因为String
is final
)。
由于String
is final
,它不能是任何其他类的超类。List<? super String>
表示作为 . 的超类的任何类型String
。事实上,Object
是一个超类String
(实际上是任何类)。