考虑两个函数:
public static void myFunction(List<?> list);
public static <T> void myFunction(List<T> list);
请解释为什么我们包含 <T>
之前myFuction
,它意味着什么?
最佳答案
当您使用
<?>
时你告诉虚拟机你不这样做 知道列表中的对象类型,一种类型可以 不只一种类型。List<?>
相当于List
从 以前的 1.4 Java 版本中,您可以将任何类型添加到列表中 对象,并且对此没有任何限制。当您使用
<T>
时您正在定义一个通用方法。你正在告诉 编译器认为List<T>
是T
类型的对象列表, 哪个 将通过对该方法的调用来确定,但您强制执行 List 中的所有对象都具有相同类型,T
。您包括<T>
前 函数名称指定您正在定义泛型 方法,并且编译器知道T
应该被视为一种类型 而不是变量。
关于java - 给定通用函数之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30989153/