在Java泛型中,List <! - 是什么? super String - >是什么意思?

时间:2012-05-24 12:38:45

标签: java generics

任何人都可以解释这两者是如何编译的以及它是如何工作的?

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

据我所知,它的实现需要是String列表还是String为超类的对象列表?我错过了什么吗?

3 个答案:

答案 0 :(得分:23)

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

您所描述的内容为<? extends String>(在此特定情况下,Stringfinal时不会非常有用,因此它没有子类。)

答案 1 :(得分:3)

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

不要混淆:

<? extends String>接受String和任何子类(其中String之后没有任何<{1}} {/ 1}}。

答案 2 :(得分:0)

由于Stringfinal,因此它不能成为任何其他类的超类。 List<? super String>表示任何类型为String的超类。实际上,ObjectString的超类(实际上是任何类)。