Java接口类型基本问题

时间:2011-03-18 19:54:51

标签: java inheritance interface

我对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 ?

}

希望我的问题很明确。

感谢您的回复。

3 个答案:

答案 0 :(得分:9)

可以使用instanceof 进行检查

if (iFace instanceof CK)

...但这通常表明你的设计出了问题,如果你不得不采取不同的方式处理。接口的想法应该是你可以以同样的方式对待它们,并让实现以适当的方式表现不同。

总是以这种方式运作,所以有时 instanceof是你能做的最好的,但这应该是罕见的。

答案 1 :(得分:2)

您可以使用instanceof关键字

答案 2 :(得分:0)

使用instanceof如下:

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

请记住,如果B扩展A,并且你有K,L,M实现B,则它们是B和A的实例。

当你扩展一个类时,你继承它和它继承的所有东西。