我有一個抽象類,有一個字段的類型可以在其子類之間變化。例如:如何從抽象類實現泛型字段?
public abstract class ABCModel {
protected String foo;
protected String bar;
protected ? baz;
}
在我的實現中,baz
可能是一個Int或Float。例如:
public class ModelFoo {
protected Int baz;
}
public class Modelbar {
protected Float baz;
}
首先,讓我問一下,在Java中這是否是有效/可接受的設計模式?我選擇了這種模式,因爲我想抽象出共享方法中大部分乏味的樣板。
取決於我如何實現它,我得到這個錯誤的變化:
incompatible types: CAP#1 cannot be converted to BidAsk
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
這使我相信我做錯了什麼。
我發佈的例子與我的實際代碼相比有點微不足道,在這個代碼中,這個泛型被嵌入在一個嵌套散列表中。我試圖決定我在做什麼是一個聰明的設計在Java或不太投入之前。
我試過尋找這個,但可能沒有正確闡明術語。
謝謝。
一目瞭然,這應該是'類ABCModel','類ModelFoo擴展ABCModel ','類ModelBar擴展ABCModel '。 –
所以你說的是「」會在指定T的地方被覆蓋? IE的所有引用將成爲Ints或浮動,例如? –
大約。這比中等複雜,但是,是的,這是主意。 –