Java 什么';s通配符和';T';? public

Java 什么';s通配符和';T';? public,java,Java,Writing绑定类型名T,以便稍后在定义中(包括在参数列表中)引用它 如果你写了 意思是“用Animal的某个特定子类(又称T)的列表做某事” 如果我在第一个方法上调用list.get(),我所知道的关于返回类型的所有信息就是它扩展了Animal。在第二种方法中,如果我有另一个List实例,我知道无论T是什么类型,两个列表都会接受相同的类型 更进一步,如果我说 public <T extends Animal> void takeThing(ArrayList<T> l

Writing
绑定类型名
T
,以便稍后在定义中(包括在参数列表中)引用它

如果你写了

意思是“用
Animal
的某个特定子类(又称
T
)的列表做某事”

如果我在第一个方法上调用
list.get()
,我所知道的关于返回类型的所有信息就是它扩展了
Animal
。在第二种方法中,如果我有另一个
List
实例,我知道无论
T
是什么类型,两个列表都会接受相同的类型

更进一步,如果我说

public <T extends Animal> void takeThing(ArrayList<T> list)
我不能再说了

Animal animal = list.get(0);
甚至在同一个列表上,因为我们没有对泛型子类型的引用。但是,如果我声明了一个
列表
其中
,我现在可以说

list.add(animal);
因为我们知道
list
需要
T

类型的元素-请阅读编辑。
Animal animal = list.get(0);
list.add(animal);
T animal = list.get(0);
list.add(animal);