我想要一个枚举来使用泛型返回接口(interface)的实例。我还不太明白。我不太确定如何表达我的问题。下面是我试图开始工作的代码。它不会编译,因为枚举希望构造函数显式处理 ImplementingClass。
我的界面
public interface MyInterface {
}
我的实现类
public class ImplementingClass implements MyInterface {
}
我正在尝试使用的枚举
public enum MyEnum {
CASE1(“CODE1”, ImplementingClass.class);
private String code;
private Class<MyInterface> aClass;
private MyEnum(String code, Class<MyInterface> aClass) {
this.code = code;
this.aClass = aClass;
}
public String getCode() {
return this.code;
}
public MyInterface getInstance() {
return this.aClass.newInstance();
}
}
最佳答案
问题是 Class<MyInterface>
只能是MyInterface.class
,而不是任何实现类,例如 ImplementingClass.class
.
您可以使用通配符为aClass
的声明创建上限。采取Class
表示任何实现 MyInterface
的类的对象:
private Class<? extends MyInterface> aClass;
private MyEnum(String code, Class<? extends MyInterface> aClass) {
this.code = code;
this.aClass = aClass;
}
关于java - 在 Java 中使用泛型返回接口(interface)实例的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937977/