比方說,我有一個情況如下:只能使用獲得的靜態類型在運行時
類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