Does java support class Foo<T super X>
,if no,why ?
Where T is a type parameter and X is a type.
Does java support class Foo<T super X>
,if no,why ?
Where T is a type parameter and X is a type.
No. The super
keyword in the context of Generics could only be used in combination with a wildcard (?
) when declaring (consumer) variables or method parameters (consumers) that are of some Generic type.
For example, these are valid:
List<? super Something> list = someListReference;
public void methodThatPopulatesAList(List<? super Something> consumer) {
...
list.add(new Something());
...
}
More info:
For Class :
class Foo<T extends X>
For Object :
Object<? extends X>
you can use generic declaration Foo<? super X>
in order to make things like this possible:
List<? super Integer> foo3 = new ArrayList<Object>();
but you can't use it in class declaration