Java 方法声明语法
我已经接手了一个项目,正在进入一种我没怎么合作过的编码风格 有人能解释一下这是怎么回事吗?尤其是克拉兹论点Java 方法声明语法,java,Java,我已经接手了一个项目,正在进入一种我没怎么合作过的编码风格 有人能解释一下这是怎么回事吗?尤其是克拉兹论点 public <T extends Enum<T>> void activateLink( final Class<? extends Enum<T>> clazz, final T linkName ) public void activateLink( 最后一个类类类假设您有一个枚举,如下所示: enum Sex { Male
public <T extends Enum<T>> void activateLink(
final Class<? extends Enum<T>> clazz, final T linkName )
public void activateLink(
最后一个类类类假设您有一个枚举
,如下所示:
enum Sex { Male, Female }
我不确定T扩展Enum
的含义
这意味着T
必须是扩展Enum
的类型
T
是泛型类型参数。如果您不了解泛型,则需要先阅读该参数,例如
只有enum
类型扩展enum
,例如Sex
隐式扩展enum
,所以它基本上说T
必须是enum
我不确定类说你有这样一个枚举
:
enum Sex { Male, Female }
我不确定T扩展Enum
的含义
这意味着T
必须是扩展Enum
的类型
T
是泛型类型参数。如果您不了解泛型,则需要先阅读该参数,例如
只有enum
类型扩展enum
,例如Sex
隐式扩展enum
,所以它基本上说T
必须是enum
我不确定类
意味着泛型方法是用类型变量T
参数化的,它扩展了Enum
Class
意味着您的泛型方法是用类型变量T
参数化的,该变量扩展了Enum
。基本上,您有一个类型参数T
,它只是一些Enum
Class您对此声明的哪一部分有问题?我不确定T extends Enum是什么意思,而Class您对此声明的哪一部分有问题?我不确定T extends Enum是什么意思,Class我明白这一点,但clazz的目的是什么。正在传入一个类对象。参数synt不能吗ax只是两个你是否一定要clazz是T类型的?这取决于代码的作用。什么决定了T的类型?如果它是泛型的,那么它不能是你传递给方法的任何东西吗?@joseyWhates否,因为任何东西都会违反T
的约束,即扩展Enum
。请参见。@joseyWhatesT
m必须是某个enum
。我理解这一点,但clazz的用途是什么。正在传入一个类对象。参数语法不能是Two吗?你一定要clazz是t类型吗?这取决于代码的作用。什么决定了t的类型?如果它是泛型的,那么它就不能是你传递给方法的任何东西吗?@JoseyWha不,因为任何东西都会违反对T
的约束,即扩展Enum
。请参见。@joseywhatesT
必须是某个Enum
。谢谢你提供的信息。Andeas。你能告诉我是什么决定了T的类型吗?或者这仅仅意味着你可以将任何类型传递给该方法吗?@joseywhates编译器将推断出e类型的T
。Java语言规范有一整章介绍了类型推断的工作原理:。在您的情况下,它将从一个参数中推断出来。感谢大家的解释。我想我现在明白了。感谢您提供的信息。Andeas。您能告诉我是什么决定了T的类型吗?或者它仅仅意味着您可以传递一个方法的类型是什么?@joseywhates编译器将推断出T
的类型。Java语言规范有一整章介绍了类型推断的工作原理:。在您的情况下,它将从一个参数推断出来。谢谢大家的解释。我想我现在明白了。
public void activateLink(final Class<? extends Enum<Sex>> clazz, final Sex linkName)