12

谁能解释这两者如何编译以及它是如何工作的?

List<? super String> list = new ArrayList<Object>();

据我了解,它的实现需要是一个字符串列表或一个将字符串作为超类的对象列表?我错过了什么吗?

4

3 回答 3

25

不(即是的,你错过了一些东西:-)。<? super String>是任何属于(包括它自己)的超类的类。(在这种情况下,唯一合适的类是。)StringStringObject

您所描述的将是<? extends String>(在这种特定情况下,它不会很有用Stringfinal因此它可以没有子类)。

于 2012-05-24T12:40:29.813 回答
4

<? super String>接受String和任何超类

不要混淆:

<? extends String>接受String和任何子(其中没有任何因为Stringis final)。

于 2012-05-24T12:41:14.243 回答
0

由于Stringis final,它不能是任何其他类的超类。List<? super String>表示作为 . 的超类的任何类型String。事实上,Object是一个超类String(实际上是任何类)。

于 2012-05-24T12:42:19.873 回答