如何指定 Java 方法返回实现接口的枚举?给出了这个方法:
public <T extends Enum<T> & SomeInterface> void someMethod(Class<T> type) {
}
我想做:
someMethod(anotherMethod());
签名应该是什么anotherMethod
?
正确的实施应该是
<T extends Enum<? extends T> & SomeInterface> void someMethod(Class<T> type);
<T extends Enum<? extends T> & SomeInterface> Class<T> anotherMethod();
请查看通配符的更多乐趣
或更简单的版本
public class Example<T extends Enum<T> & SomeInterface> {
public void someMethod(Class<T> type) {}
public Class<T> anotherMethod() {}
}
如果someMethod
需要一个Class<T>
参数 where T extends Enum<T> & SomeInterface
,那么这就是您需要从anotherMethod
. 而且由于您在所需调用的括号中没有任何内容,我会简单地说:
public Class<T extends Enum<T> & SomeInterface> anotherMethod()
anotherMethod
只需要返回 a Class
,它可能是您想到的扩展枚举和接口的确切类,或者只是一个通配符Class<?>
(尽管您会有编译时警告)。如果您想避免警告,则返回类型需要使用您调用的方法中Class<T>
的泛型定义。T