方法返回类型之前的 <T> 是什么意思?

Jam*_*lor 1 java generics generic-method

以下方法返回由T类型元素组成的列表:

public <T> List<T> getList() {
    return new ArrayList<T>();
}
Run Code Online (Sandbox Code Playgroud)

在签名中,我们有<T> List<T>. 这List<T>是有道理的,因为这是返回值的类型。前面的需要什么<T>

没有<T>和,代码无法编译List<T>。而忽略了<T>

无法解析符号 T


我已经阅读了关于泛型方法的官方 Oracle 教程。它解释说这是语法的一部分:

泛型方法的语法包括一个类型参数列表,在尖括号内,它出现在方法的返回类型之前。

但它并没有真正解释为什么首先需要它或者它对方法有什么确切的影响。

Iva*_*van 5

第一个<T>表示第二个T是泛型参数的占位符,而不是您将要存储在该列表中的类的实际名称。

如果没有第一个<T>编译器将T视为类名(如ObjectString等),尝试T在具有该方法的类所在的同一包中或在具有该方法的类的导入部分中查找命名的类。如果编译器找不到命名的类T,它将显示编译错误。