下面的方法返回一个List组成T
类型元素:
public <T> List<T> getList() {
return new ArrayList<T>();
}
在签名中我们有<T> List<T>
. The List<T>
有道理,因为这是返回值。前面的需要什么<T>
though?
如果没有两者,代码将无法编译<T>
and List<T>
。省略<T>
gives
无法解析符号 T
我已经阅读了 Oracle 官方教程通用方法 https://docs.oracle.com/javase/tutorial/java/generics/methods.html。它解释说这是语法的一部分:
泛型方法的语法包括尖括号内的类型参数列表,该列表出现在方法的返回类型之前。
但它并没有真正解释为什么首先需要它或者它对方法有什么确切的影响。
首先<T>
表示第二个T
是通用参数的占位符,而不是您要存储在该列表中的类的实际名称。
如果没有那个第一<T>
编译器将处理T
作为类名(例如Object
, String
等)尝试找到一个名为T
在具有该方法的类所在的同一包中或在具有该方法的类的导入部分中。如果编译器无法找到名为的类T
它会显示编译错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)