2011-03-18 54 views
0

我有一個Java接口的基本問題。Java接口類型基本問題

說,如果我有一個interface IAinterface IB extends IA

現在,

class CK implements IB, 
class CL implements IB, 
class CM implements IB, 

...等

void foo(IA iFace) { 
// I know how to check if iFace is of type CK/CL/CM ... 

// Is it possible to check if iFace is of type IB ? 

} 

希望我的問題是清楚的。

感謝您的回覆。

回答

9

可以檢查使用instanceof

if (iFace instanceof CK) 

...但它通常是你的設計出了問題,如果你以不同的方式處理事情的跡象。接口的想法應該是你可以以同樣的方式對待它們,並讓實現的行爲以適當的方式不同。

它並不總是工作出現這樣的,所以有時instanceof是你能做的最好的,但應該是一個罕見的。

2

可以使用instanceof關鍵字

+0

aaah。應該考慮一下。謝謝! – JohnH 2011-03-18 20:01:44

0

使用的instanceof如下:

if(ObjectA instanceof ObjectB) 
{ 
    //hooray, it is 
} 

記住,如果B擴展A,和你有K,L,M實施B,它們是一個實例的B和A.

當你擴展一個類時,你從它繼承它以及它繼承的所有東西。