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

Java 什么是<;T>;方法的返回类型之前是什么意思?,java,generics,generic-method,Java,Generics,Generic Method,以下方法返回由Ttype元素组成的列表: public <T> List<T> getList() { return new ArrayList<T>(); } public List getList(){ 返回新的ArrayList(); } 签名中有列表。列表很有意义,因为这是返回值的类型。但是前面的需要什么 如果没有和列表,代码就无法编译。省略给出 无法解析符号T 我已经阅读了有关Oracle的官方教程。它解释了这是语法的一部分: 泛型方法

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

public <T> List<T> getList() {
    return new ArrayList<T>();
}
public List getList(){
返回新的ArrayList();
}
签名中有
列表
列表
很有意义,因为这是返回值的类型。但是前面的
需要什么

如果没有
列表
,代码就无法编译。省略
给出

无法解析符号T


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

泛型方法的语法包括尖括号内的类型参数列表,该列表显示在方法的返回类型之前

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

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

如果没有第一个
,编译器将
T
视为类名(如
对象
字符串
,等等),尝试在具有该方法的类存在的同一包中或具有该方法的类的导入部分中查找名为
T
的类。若编译器找不到名为
T
的类,它将显示编译错误

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


如果没有第一个
,编译器将
T
视为类名(如
对象
字符串
,等等),尝试在具有该方法的类存在的同一包中或具有该方法的类的导入部分中查找名为
T
的类。若编译器找不到名为
T
的类,它将显示编译错误

是泛型类型参数。这表明这是一种通用方法。否则就没有指示
T
应该是什么。第一个指示这是一个通用方法。第二个是List的一部分,它是返回类型,指示该方法返回泛型类型参数的列表。请注意,第一个不是返回类型的一部分。您还可以有一个空的发送列表(列表)method@GonenI你是对的。我无法在没有电子邮件的情况下编译发送列表。但是,你知道为什么编译器不能简单地从返回或参数泛型类型推断类型,而不需要额外的参数吗?或者你能给我指的任何进一步的阅读?@Zabuza关于“你可以发布那个链接,然后解释为什么它没有回答你的问题”——谢谢你的解释。你是对的,我以后会记住这一点。我已经删除了我对编辑的评论,因为最新的编辑增加了文章的清晰度。
是一个通用类型参数。这表明这是一种通用方法。否则就没有指示
T
应该是什么。第一个指示这是一个通用方法。第二个是List的一部分,它是返回类型,指示该方法返回泛型类型参数的列表。请注意,第一个不是返回类型的一部分。您还可以有一个空的发送列表(列表)method@GonenI你是对的。我无法在没有电子邮件的情况下编译发送列表。但是,你知道为什么编译器不能简单地从返回或参数泛型类型推断类型,而不需要额外的参数吗?或者你能给我指的任何进一步的阅读?@Zabuza关于“你可以发布那个链接,然后解释为什么它没有回答你的问题”——谢谢你的解释。你是对的,我以后会记住这一点。我已经删除了我对编辑的评论,因为最新的编辑增加了文章的清晰度。谢谢,这很有意义。还解释了为什么在没有
的情况下,我会收到一个错误,说“无法解析符号T”。谢谢,这是有道理的。还解释了为什么在没有
的情况下,我会收到一个错误,说“无法解析符号T”