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;
}
}
答案 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;
}
}