给定通用函数之间的区别?

时间:2015-06-22 20:23:25

标签: java generics

考虑两个功能:

public static void myFunction(List<?> list);

public static <T> void myFunction(List<T> list);

请解释为什么我们在<T>之前加入了myFuction,这意味着什么?

1 个答案:

答案 0 :(得分:1)

  1. 当您使用<?>时,您告诉虚拟机您不知道 知道列表中的对象类型,可以是一种类型 不止一种。 List<?>相当于List 以前的1.4 Java版本,你可以添加任何类型的列表 对象并没有限制。

  2. 使用<T>时,您正在定义通用方法。你说的 编译器List<T>T类型的对象列表,其中 将通过调用方法确定,但您执行该操作 List中的所有对象都属于同一类型T。您之前包含<T> 用于指定要定义泛型的函数名称 方法,以及编译器知道T应该被视为一种类型 而不是变量。