泛型不适用于返回类型

Thi*_*ler 3 java enums

为什么java不允许以下泛型返回类型:

public <T extends Enum<T> & MyInterface> Class<T> getEnum() {
    return MyEnum.class;
}
Run Code Online (Sandbox Code Playgroud)

虽然以下工作正常:

public <T extends Enum<T> & MyInterface> Class<T> getEnum(Class<T> t) {
    return t;
}

getEnum(MyEnum.class); 
Run Code Online (Sandbox Code Playgroud)

MyEnum是一个实现接口的enumaration MyInterface.

为什么我不被允许返回MyEnum.class

编辑:

我需要这个,因为该功能getEnum()在界面中.它可以定义如下:

@Override
public Class<MyEnum> getEnum() {
    return MyEnum.class;
}
Run Code Online (Sandbox Code Playgroud)

但那么接口方法的返回类型是什么才能允许Class类的任何对象同时包含枚举和实现MyInterface呢?

Jon*_*eet 7

您的方法是参数化的T- 想法是调用者指定的是什么T- 而不是方法实现.

对第二种方法的调用有效,因为T(由调用者)隐式指定MyEnum.