有人可以解释一下这个代码为什么能编译通过并且它的工作原理吗?
List<? super String> list = new ArrayList<Object>();
据我理解,实现这个操作需要使用字符串列表或具有字符串作为超类的对象列表?我有漏掉什么吗?
<? super String>
表示任何一个是 String
的超类(包括 String
本身)的类。(在这种情况下,唯一符合条件的其他适当类是 Object
。)<? extends String>
(在这种特定情况下不会很有用,因为 String
是 final
,所以它没有子类)。<? super String>
接受String
和任何超类。
不要混淆:
<? extends String>
接受String
和任何子类(没有子类,因为String
是final
)。