考虑两个功能:
public static void myFunction(List<?> list);
public static <T> void myFunction(List<T> list);
请解释为什么我们在<T>
之前加入了myFuction
,这意味着什么?
答案 0 :(得分:1)
当您使用<?>
时,您告诉虚拟机您不知道
知道列表中的对象类型,可以是一种类型
不止一种。 List<?>
相当于List
以前的1.4 Java版本,你可以添加任何类型的列表
对象并没有限制。
使用<T>
时,您正在定义通用方法。你说的
编译器List<T>
是T
类型的对象列表,其中
将通过调用方法确定,但您执行该操作
List中的所有对象都属于同一类型T
。您之前包含<T>
用于指定要定义泛型的函数名称
方法,以及编译器知道T
应该被视为一种类型
而不是变量。