如何指定Java方法返回实现接口的枚举? 给出了这种方法:
public <T extends Enum<T> & SomeInterface> void someMethod(Class<T> type) {
}
我想做:
someMethod(anotherMethod());
anotherMethod
的签名应该是什么?
答案 0 :(得分:3)
如果someMethod
需要Class<T>
参数,T extends Enum<T> & SomeInterface
,那么您需要从anotherMethod
返回。由于您在所需电话中的括号中没有任何内容,我只想说:
public Class<T extends Enum<T> & SomeInterface> anotherMethod()
答案 1 :(得分:3)
正确实施应
<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() {}
}
答案 2 :(得分:1)
anotherMethod
只需要返回一个Class
,它可能是你想到的扩展你的枚举和界面的完全类,或者只是一个通配符Class<?>
(尽管你会有编译时间警告)。如果您想避免出现警告,则返回类型必须为Class<T>
,其泛型定义为T
,与您正在调用的方法一样。