我正在研究涉及從字符串/流中讀取結構的項目。 作爲我設計的一部分,我試圖創建這些方針的東西:Java - 衝突的接口類型參數
public class Thing;
public class SpecialThing extends Thing;
public class ShinyThing extends Thing;
public abstract class ThingDeserialiser implements Iterable<Thing>;
public abstract class GenericThingDeserialiser<T extends Thing> extends ThingDeserialiser implements Iterable<T>;
public class SpecialThingDeserialiser extends GenericThingDeserialiser<SpecialThing>;
public class ShinyThingDeserialiser extends GenericThingDeserialiser<ShinyThing>;
但是我得到GenericThingDeserialiser
錯誤,因爲有
ThingDeserialiser
實施Iterable<Thing>
和GenericThingDeserialiser
試圖實現Iterable<T>
之間的衝突。
我能夠在C#
中創建像這樣的設置,爲什麼我無法在Java
中做到這一點?
有沒有辦法解決這個問題?
我也認爲,希望ShinyThingDeserialiser
和SpecialThingDeserialiser
可能都被強制轉換爲GenericThingDeserialiser<Thing>
去除ThingDeserialiser
,但預計這不會工作。
我有另一個涉及接口的想法,但我想在繼續之前停下來尋求建議。
如果不明顯,總體思路是基於合理的微不足道的模式從字符串/流中檢索Thing
對象。
@CarlosBribiescas我以我的方式嘗試事物的主要原因是我對C#和C#中的工作有更多的經驗,所以我習慣於這樣的工作。我在頂部有一個ThingDeserialiser的主要原因是我可以收集一些ThingDeserialiser,它們可以是任何形式的GenericThingDeserialiser或者任何其他的鏈接。此外,可以擴展「ThingDeserialiser」,而不是通用版本,例如包裝可能生成「ShinyThing」或「SpecialThing」的工廠。長話短說:靈活性。 – Pharap 2014-10-28 13:04:47