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
。请参见。@joseyWhates
T
m必须是某个
enum
。我理解这一点,但clazz的用途是什么。正在传入一个类对象。参数语法不能是Two吗?你一定要clazz是t类型吗?这取决于代码的作用。什么决定了t的类型?如果它是泛型的,那么它就不能是你传递给方法的任何东西吗?@JoseyWha不,因为任何东西都会违反对
T
的约束,即
扩展Enum
。请参见。@joseywhates
T
必须是某个
Enum
。谢谢你提供的信息。Andeas。你能告诉我是什么决定了T的类型吗?或者这仅仅意味着你可以将任何类型传递给该方法吗?@joseywhates编译器将推断出e类型的
T
。Java语言规范有一整章介绍了类型推断的工作原理:。在您的情况下,它将从一个参数中推断出来。感谢大家的解释。我想我现在明白了。感谢您提供的信息。Andeas。您能告诉我是什么决定了T的类型吗?或者它仅仅意味着您可以传递一个方法的类型是什么?@joseywhates编译器将推断出
T
的类型。Java语言规范有一整章介绍了类型推断的工作原理:。在您的情况下,它将从一个参数推断出来。谢谢大家的解释。我想我现在明白了。
public void activateLink(final Class<? extends Enum<Sex>> clazz, final Sex linkName)