Java 泛型 <T> 含义
Java Generics <T> Meaning
我正在阅读和评论以下网站并有一个问题。
https://www.geeksforgeeks.org/angle-bracket-in-java-with-examples/
在下面的解释中,他们显示了 class 定义,后跟 <T>
,然后在实际实现这些 classes 时,他们使用不同的类型,例如 or 作为参数。我的问题是:'' 符号实际上是 Java 中定义的语法吗?特别是,为了定义 "Generic",T 是必要的吗?然后它基本上意味着参数可以是多种不同的类型吗?此外,如果任何人都可以用更简单的术语改写或解释通用的含义,那将非常有帮助。谢谢
<T>
确实是由Java定义的语法,但是你可以使用任何你想命名的类型,你不需要使用T
,因为例如这是有效的:
public class Box<MyType> {
private MyType t;
public void set(MyType t) { this.t = t; }
public MyType get() { return t; }
}
但是,请坚持使用 T
或其他常见类型名称,因为其他人已经习惯将它们视为 "generic types",这样可以使您的代码阅读更简单。
我建议您阅读 Java 关于 Generics 的 Trail,您可以在其中找到最常用的类型参数名称:
E - Element
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types
至于"what the meaning of generics is",勾选这个other page。
这是自 Java 以来定义的语法 5. 您需要一个类型参数(一个或多个)来定义泛型。类型参数不需要称为 T
,任何 Java 标识符都可以。单个大写字母是常规的,如果我们没有其他字母的特定原因,我们通常会选择 T
作为类型。
实际类型参数必须是引用类型。值仍然总是进入圆括号中的实际参数,而不是类型参数(例如,与 C++ 不同)。您可以制作一个 new ArrayList<Integer>(50)
,一个包含 Integer
个对象的列表,其中初始容量为 50 个。
实际类型参数必须是引用类型意味着您可以拥有 List<String>
、List<LocalDate>
或您自己声明的接口类型列表,甚至是 List<int[]>
。在我使用的 Java 版本中(最多 Java 10)类型参数不能是原始类型(如 int
),但它可以是数组类型(如 int[]
或 String[][]
,尽管通常不切实际)。允许原始类型可能会出现在未来的 Java 版本中。
Link: 类似问题:What does < T > (angle brackets) mean in Java?
我正在阅读和评论以下网站并有一个问题。
https://www.geeksforgeeks.org/angle-bracket-in-java-with-examples/
在下面的解释中,他们显示了 class 定义,后跟 <T>
,然后在实际实现这些 classes 时,他们使用不同的类型,例如 or 作为参数。我的问题是:'' 符号实际上是 Java 中定义的语法吗?特别是,为了定义 "Generic",T 是必要的吗?然后它基本上意味着参数可以是多种不同的类型吗?此外,如果任何人都可以用更简单的术语改写或解释通用的含义,那将非常有帮助。谢谢
<T>
确实是由Java定义的语法,但是你可以使用任何你想命名的类型,你不需要使用T
,因为例如这是有效的:
public class Box<MyType> {
private MyType t;
public void set(MyType t) { this.t = t; }
public MyType get() { return t; }
}
但是,请坚持使用 T
或其他常见类型名称,因为其他人已经习惯将它们视为 "generic types",这样可以使您的代码阅读更简单。
我建议您阅读 Java 关于 Generics 的 Trail,您可以在其中找到最常用的类型参数名称:
E - Element
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types
至于"what the meaning of generics is",勾选这个other page。
这是自 Java 以来定义的语法 5. 您需要一个类型参数(一个或多个)来定义泛型。类型参数不需要称为 T
,任何 Java 标识符都可以。单个大写字母是常规的,如果我们没有其他字母的特定原因,我们通常会选择 T
作为类型。
实际类型参数必须是引用类型。值仍然总是进入圆括号中的实际参数,而不是类型参数(例如,与 C++ 不同)。您可以制作一个 new ArrayList<Integer>(50)
,一个包含 Integer
个对象的列表,其中初始容量为 50 个。
实际类型参数必须是引用类型意味着您可以拥有 List<String>
、List<LocalDate>
或您自己声明的接口类型列表,甚至是 List<int[]>
。在我使用的 Java 版本中(最多 Java 10)类型参数不能是原始类型(如 int
),但它可以是数组类型(如 int[]
或 String[][]
,尽管通常不切实际)。允许原始类型可能会出现在未来的 Java 版本中。
Link: 类似问题:What does < T > (angle brackets) mean in Java?