比方说,我有一个情况如下:只能使用获得的静态类型在运行时
类X
有S
类型的字段s
。
S
由两个类A
和B
都实施一些相同的方法/我们都知道然后应在S
实现,但不幸的是,这种情况并非如此领域扩展。
现在我想要做这样的事情:
"A or B" downcast_field;
if(s instanceof A)
downcast_field = (A)s;
else if (s instanceof B)
downcast_field = (B)s;
//do something common for the two cases but that need methods implemented both in A and B
的问题,然后提前对具有静态类型(出IFs
的),让我把这种方法。
我想,由于糟糕的设计,这实际上是不可能的,我必须写两次相同的代码,这是丑陋的,但也许有一种解决方案,我现在没有看到。
你可以添加一个接口到'A'和'B'吗? –
设计是非常糟糕的男人!你需要改变它 – Pratik
@pratik如果可能的话,我已经做到了!不幸的是,它现在必须保持这样的状态 – Demplo