java支持类Foo <t super =“”x =“”>,如果不支持,为什么?

时间:2016-03-22 10:55:10

标签: java generics

java支持class Foo<T super X>,如果不支持,为什么?

其中T是类型参数,X是类型。

3 个答案:

答案 0 :(得分:6)

没有。泛型上下文中的super关键字只能在声明(消费者)变量或某些泛型类型的方法参数(消费者)时与通配符(?)结合使用。

例如,这些是有效的:

List<? super Something> list = someListReference;

public void methodThatPopulatesAList(List<? super Something> consumer) {
    ...
    list.add(new Something());
    ...
}

更多信息:

答案 1 :(得分:0)

你可以使用通用声明Foo<? super X>来实现这样的目标:

List<? super Integer> foo3 = new ArrayList<Object>();

但你不能在课堂宣言中使用它

答案 2 :(得分:0)

对于班级:

class Foo<T extends X>

对象:

Object<? extends X>