在Java中,super关键字可以用于泛型中表示某个类的父类类型。通常情况下,super关键字用于泛型的上界限定。例如,如果我们有一个泛型类GenericClass<T>
,我们可以使用<? super T>
来表示T的父类类型。
public class GenericClass<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public void printSuperType(List<? super Integer> list) {
System.out.println(list);
}
}
在上面的例子中,printSuperType
方法接受一个List
类型的参数,该List中存储的元素必须是Integer的父类。这样我们就可以传入Integer或其父类的List实例作为参数。
public static void main(String[] args) {
GenericClass<Integer> generic = new GenericClass<>();
List<Number> numberList = new ArrayList<>();
numberList.add(10);
numberList.add(20);
generic.printSuperType(numberList);
List<Object> objectList = new ArrayList<>();
objectList.add("Hello");
objectList.add("World");
generic.printSuperType(objectList);
}
在上面的示例中,我们实例化了一个存储Integer类型的GenericClass
对象,然后分别传入了存储Number和Object类型的List实例作为参数调用printSuperType
方法。这样就可以灵活地处理不同类型的父类对象。