上界(? extends T)
指定泛型的上界,即泛型类型必须是指定类型的子类型或者是指定类型本身。
例:
class Animal { }
class Mammal extends Animal { }
class Dog extends Mammal { }
public <T extends Mammal> void addMammal(T mammal){ }
addMammal(new Dog()); //合法
addMammal(new Animal()); //不合法下界(? super T)
指定泛型的下界,即泛型类型必须是指定类型的父类型或者是指定类型本身。
例:
class Animal { }
class Mammal extends Animal { }
class Dog extends Mammal { }
public <T super Mammal> void addAnimal(T animal){ }
addAnimal(new Animal()); //合法
addAnimal(new Dog()); //不合法