我正在从事一个涉及从字符串/流中读取结构的项目。
作为设计的一部分,我尝试按照以下思路创建一些东西:
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
中进行设置?有办法解决这个问题吗?
我还考虑过删除
ThingDeserialiser
,以希望ShinyThingDeserialiser
和SpecialThingDeserialiser
都可以转换为GenericThingDeserialiser<Thing>
,但按预期那样是行不通的。我还有一个涉及接口的想法,但是我想停下来并寻求建议,然后再继续。
如果不是很明显,通常的想法是根据合理的琐碎模式从字符串/流中检索
Thing
对象。 最佳答案
我绝对建议删除ThingDeserialiser。您说您想将ShinyThingDeserialiser和SpecialThingDeserializer强制转换为GenericThingDeserialiser ,但这是行不通的。您应该可以将它们强制转换为GenericThingDeserialiser 。有帮助吗?