枚举泛型抽象类构造函数

时间:2020-05-15 23:33:22

标签: java generics enums constructor abstract

Eclipse在MyEnum.java中报告了错误“将构造函数'MyEnum(Class <AbstractIO>)更改为MyEnum(Class <StringIO>)'”。

如何同时使用(StringIO和NumberIO)对其进行修复?

AbstractIO.java

public class AbstractIO{}

StringIO.java

public class StringIO extends AbstractIO{}

NumberIO.java

public class NumberIO extends AbstractIO{}

MyEnum.java

public enum MyEnum {
    String ( StringIO.class),
    Number( NumberIO.class);

    private Class<AbstractIO> ioClass;

    MyEnum( Class<AbstractIO> clazz) {
        this.ioClass = clazz;
    }
}

1 个答案:

答案 0 :(得分:0)

如果您的变量类型为Class<AbstractIO>,则可以将其设置为的唯一类是AbstractIO.class

引用扩展AbstractIO的类所需的类型为Class<? extends AbstractIO>

public enum MyEnum {
    String(StringIO.class),
    Number(NumberIO.class);

    private Class<? extends AbstractIO> ioClass;

    MyEnum(Class<? extends AbstractIO> clazz) {
        this.ioClass = clazz;
    }
}