我对Java接口有一个基本的问题。
说我是否有interface IA
和interface 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 ?
}
希望我的问题很明确。
感谢您的回复。
答案 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的实例。
当你扩展一个类时,你继承它和它继承的所有东西。