Java泛型含义

Java泛型含义,java,generics,syntax,type-parameter,Java,Generics,Syntax,Type Parameter,我正在阅读和浏览以下网站,有一个问题 在下面的解释中,它们显示了类定义,然后在实际实现这些类时,它们使用不同的类型,例如或作为参数。我的问题是:这个符号实际上是Java中定义的语法吗?特别是,T是定义泛型的必要条件吗?那么这基本上意味着参数可以是多种不同的类型吗?此外,如果有人能用更简单的术语改写或解释泛型的含义,那将非常有帮助。谢谢。确实是由Java定义的语法,但是您可以使用任何您想要命名类型的名称,您不需要使用t,例如,这是有效的: 公共类箱{ 私有myt型; public void set

我正在阅读和浏览以下网站,有一个问题

在下面的解释中,它们显示了类定义,然后在实际实现这些类时,它们使用不同的类型,例如或作为参数。我的问题是:这个符号实际上是Java中定义的语法吗?特别是,T是定义泛型的必要条件吗?那么这基本上意味着参数可以是多种不同的类型吗?此外,如果有人能用更简单的术语改写或解释泛型的含义,那将非常有帮助。谢谢。

确实是由Java定义的语法,但是您可以使用任何您想要命名类型的名称,您不需要使用t,例如,这是有效的:

公共类箱{ 私有myt型; public void setMyType t{this.t=t;} 公共MyType获取{return t;} } 但是,请坚持使用T或其他常见类型名称,因为其他人已经习惯于将它们视为泛型类型,这样可以简化代码的阅读

我建议您阅读Java的教程,在这里您可以找到最常用的类型参数名称:

E - Element
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types
至于泛型的含义是什么,请检查此项。

泛型确实是由Java定义的语法,但是您可以使用任何您想要命名类型的名称,您不需要使用t,例如,这是有效的:

公共类箱{ 私有myt型; public void setMyType t{this.t=t;} 公共MyType获取{return t;} } 但是,请坚持使用T或其他常见类型名称,因为其他人已经习惯于将它们视为泛型类型,这样可以简化代码的阅读

我建议您阅读Java的教程,在这里您可以找到最常用的类型参数名称:

E - Element
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types

至于泛型的含义是什么,请检查此项。

它是自Java 5以来定义的语法。您需要一个或多个类型参数来定义泛型。类型参数不需要调用T,任何Java标识符都可以。单个大写字母是常规的,如果我们没有其他字母的具体原因,我们通常会选择T作为类型

实际类型参数必须是引用类型。例如,在圆括号中,值仍然会进入实际参数,而不是进入C++中的类型参数。您可以创建一个新的ArrayList50,这是一个整数对象列表,初始容量为50个

实际类型参数必须是引用类型,这意味着您可以拥有一个列表、一个列表或一个您自己声明的接口类型列表,甚至一个列表。在Java版本中,我使用了Java 10之前的版本,类型参数不能是像int这样的基本类型,但它可以是像int[]或String[]这样的数组类型,尽管这通常是不切实际的。在未来的Java版本中,可能会出现允许基本类型的情况


链接:类似的问题:

它是从Java5开始定义的语法。您需要一个或多个类型参数来定义泛型。类型参数不需要调用T,任何Java标识符都可以。单个大写字母是常规的,如果我们没有其他字母的具体原因,我们通常会选择T作为类型

实际类型参数必须是引用类型。例如,在圆括号中,值仍然会进入实际参数,而不是进入C++中的类型参数。您可以创建一个新的ArrayList50,这是一个整数对象列表,初始容量为50个

实际类型参数必须是引用类型,这意味着您可以拥有一个列表、一个列表或一个您自己声明的接口类型列表,甚至一个列表。在Java版本中,我使用了Java 10之前的版本,类型参数不能是像int这样的基本类型,但它可以是像int[]或String[]这样的数组类型,尽管这通常是不切实际的。在未来的Java版本中,可能会出现允许基本类型的情况


链接:类似问题:

那个网站看起来不错;我不确定我们还能补充什么。是的,T是一个必要的东西-在他们的类测试示例中,在声明局部变量T obj;,时使用它;,在诸如public T getObject之类的方法的声明中。对于每个Test实例,它们在编译时从声明的类型中获取类型-例如,Test sObj意味着sObj将有一个String类型的实例变量obj,并且它的getObject方法返回一个String.OK-那么我的理解是否正确?换句话说,T是泛型语法的实际部分,这意味着类的参数可以是变量类型?是泛型类型。可以阅读。是的,带有一个或多个类型的尖括号是泛型的语法。要确认的T可以是任何有效的占位符,由提供的类型替换。除此之外,我不确定您所说的类的参数可以是变量类型的。谢谢Ole V.V。-我喜欢其中一个解释的一部分,其中说明:
在类名后指定尖括号意味着您正在创建一个临时数据类型,它可以保存任何类型的数据;我不确定我们还能补充什么。是的,T是一个必要的东西-在他们的类测试示例中,在声明局部变量T obj;,时使用它;,在诸如public T getObject之类的方法的声明中。对于每个Test实例,它们在编译时从声明的类型中获取类型-例如,Test sObj意味着sObj将有一个String类型的实例变量obj,并且它的getObject方法返回一个String.OK-那么我的理解是否正确?换句话说,T是泛型语法的实际部分,这意味着类的参数可以是变量类型?是泛型类型。可以阅读。是的,带有一个或多个类型的尖括号是泛型的语法。要确认的T可以是任何有效的占位符,由提供的类型替换。除此之外,我不确定您所说的“类的参数可以是变量类型”是什么意思。感谢Ole V.V.-我喜欢其中一个解释的一部分,其中说明:在类名后指定尖括号意味着您正在创建一个临时数据类型,它可以保存任何类型的数据。