2013-10-27 49 views
0

我有一種情況,我檢查instanceO的某些類以繼續執行我的邏輯。向instanceOf添加額外檢查在java中登記

對於如。

if (obj instanceof X) 
{ 
    result = true; 
} 

但是現在這在我的遺留代碼中被用在很多地方。

我的問題是現在這個instanceOf應該只有當某些全局屬性變量爲true時才返回true。

,如下圖所示我要尋找一個替代解決方案,以取代所有這些instanceof檢查:

if (GLOBALPROPERTY == true) 
{ 
    if (obj instanceof X) 
    { 
     result = true; 
    } 
} 

我可以注入類X本身,使這裏面檢查,它會返回false,無論我檢查}這種這個班。

+0

你使用的所有類都有一個共同的祖先類嗎? –

+0

不一定.. – Sen

+4

另外,您可以只執行'result = obj instanceof X'而不是'if'。 – SudoRahul

回答

1

不,你不能。

我能想到的最接近的是使用AspectJ進行面向方面編程。但是這將會非常棘手 - 首先你可能不得不從使用instanceof切換到使用正確的多態方法調用。

但實際上,您可能只需要搜索並替換整個代碼庫。