【发布时间】:2015-12-09 18:02:08
【问题描述】:
我有一个界面:
public MyInterface {};
很少有枚举实现MyInterface:
public enum MyFirstEnums implements MyInterface{};
在另一个类中,我需要一个方法来返回 Class 对象,这样
该类应该像MyFirstEnums,它扩展了枚举并实现了MyInterface。
方法的返回类型应该是:<E extends Enum<?> & MyInterface>,应该允许返回 MyFirstEnums.class 和类似的枚举
我试着这样做:
public <E extends Enum<?> & MyInterface> Class<E> getClazz(){
return MyFirstEnums.class;
}
但这给了我错误:
Type mismatch: cannot convert from Class<MyFirstEnums> to Class<E>
我在这里错过了什么?
在其他地方,我尝试了一种将此类类型作为参数的方法,并且效果很好:
public <E extends Enum<?> MyInterface> void doSomething(Class<E> myClazz){};
//it rightly checks the type of myClazz while calling this method
【问题讨论】: