我有一个 Java 枚举类,如下所示。我正在尝试将 A 类型布尔值转换为 B 类型。为此,我将工厂与通用一起使用。但是这里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 返回,它被成功编译。但是当它作为输入参数传递时,它失败了。
皈依舞
相关分类