枚举以返回在Java中使用泛型的接口实例?

枚举以返回在Java中使用泛型的接口实例?,java,generics,enums,Java,Generics,Enums,我希望有一个枚举来返回一个接口的实例,使用泛型。我还不太明白。我不知道该如何表达我的问题。下面是我正在努力工作的代码。它不会编译,因为枚举希望构造函数显式处理ImplementingClass 我的界面 public interface MyInterface { } 我的执行课 public class ImplementingClass implements MyInterface { } 我正在努力工作的枚举 public enum MyEnum { CASE1(“COD

我希望有一个枚举来返回一个接口的实例,使用泛型。我还不太明白。我不知道该如何表达我的问题。下面是我正在努力工作的代码。它不会编译,因为枚举希望构造函数显式处理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();
    }
}
公共枚举MyEnum{
案例1(“代码1”,实现类);
私有字符串码;
私有类aClass;
私有MyEnum(字符串代码,类aClass){
this.code=代码;
this.aClass=aClass;
}    
公共字符串getCode(){
返回此.code;
}
公共MyInterface getInstance(){
返回此.aClass.newInstance();
}
}

问题在于
类只能是
MyInterface.Class
,而不能是任何实现类,如
ImplementingClass.Class

您可以使用通配符在
aClass
的声明上创建上限,以获取表示实现
MyInterface
的任何类的
Class
对象:

private Class<? extends MyInterface> aClass;

private MyEnum(String code, Class<? extends MyInterface> aClass) {
    this.code = code;
    this.aClass = aClass;
}

private Class一些通配符的使用和施法的神奇之处在于:

public enum MyEnum {

 CASE1("CODE1", (Class<? extends MyInterface>)ImplementingClass.class);

 private String code;
 private Class<? extends MyInterface> aClass;

 private MyEnum(String code, Class<? extends MyInterface> aClass) {
    this.code = code;
    this.aClass = aClass;
 }    

 //...
}
公共枚举MyEnum{

案例1(“代码1”,(ClassYou没有正确使用枚举…除非您将MyEnum设置为classOK,否则此代码将无法工作。谢谢。是否有任何方法可以实例化该类而不引发InstantiationException和IllegalAccessException?或者有更好的方法来解决此问题?不,如果您有一个
对象,并且您想要该类的实例,那么,就没有办法捕获这些异常,或者必须在方法上使用
抛出
子句来声明它们。