1 回答

TA貢獻(xiàn)1851條經(jīng)驗 獲得超3個贊
這個簽名:
public?abstract?<M?extends?IADataType,?R?extends?IBDataType>?IConverter<M,?R>?getInstance1(R?data);
意味著該方法的實現(xiàn)必須采用任何R(在范圍內(nèi))。
您正在嘗試實現(xiàn)它以采用特定的 R。
那根本行不通,因為它不是覆蓋等效的。
此外,您應(yīng)該非常小心這些@SuppressWarnings("unchecked")
注釋。僅抑制您可以推理的警告實際上是安全的;這些不是。
如果您希望枚舉值具有不同的類型,則不能使用枚舉。最終,枚舉值只是包含類中的靜態(tài)最終字段。
因此,只需定義一個類,然后您就可以使用類級類型變量來約束特定類型。
public class FactoryClass<M extends IADataType, R extends IBDataType> {
? ? public static final FactoryClass<ABoolean, BBoolean> BOOLEAN = new FactoryClass<ABoolean, BBoolean>() {
? ? ? ? @Override
? ? ? ? public BooleanConverter getInstance() {
? ? ? ? ? ? return new BooleanConverter();
? ? ? ? }
? ? ? ? @Override
? ? ? ? public BooleanConverter getInstance(BBoolean bacStacDataType) {
? ? ? ? ? ? return new BooleanConverter(bacStacDataType);
? ? ? ? }
? ? };
? ? public abstract IConverter<M, R> getInstance();
? ? public abstract IConverter<M, R> getInstance1(R data);
}
添加回答
舉報