【发布时间】:2019-08-13 06:16:06
【问题描述】:
我有一个如下的 Java 枚举类。我正在尝试将 A 类型布尔转换为 B 类型。为此,我将工厂与 Generic 一起使用。但是这里getInstance()方法实现的代码编译成功,而getInstance1()方法实现却失败了。
public enum FactoryEnum {
BOOLEAN {
@SuppressWarnings("unchecked")
@Override
public IConverter<ABoolean, BBoolean> getInstance() {// Compiled Successfully
return new BooleanConverter();
}
@SuppressWarnings("unchecked")
@Override
public IConverter<ABoolean, BBoolean> getInstance(BBoolean bacStacDataType) { // Compilation Failed
return new BooleanConverter(bacStacDataType);
}
};
public abstract <M extends IADataType, R extends IBDataType> IConverter<M, R> getInstance();
public abstract <M extends IADataType, R extends IBDataType> IConverter<M, R> getInstance1(R data);
// A Type
public interface IADataType {
}
public class ABoolean implements IADataType {
}
// B Type
public interface IBDataType {
}
public class BBoolean implements IBDataType {
}
//Converter to Convert Data From A to B
public interface IConverter<M, R> {
}
public class BooleanConverter implements IConverter<ABoolean, BBoolean> {
public BooleanConverter() {
}
public BooleanConverter(BBoolean boolean1) {
}
}
}
你能帮我理解一下背后的原因吗?因为在第一种方法中也使用相同的通用参数 R 作为回报,它正在成功编译。但是当它作为输入参数传递时,它就失败了。
【问题讨论】:
标签: java generics enums factory