Java接口类型基本问题

Joh*_*hnH 0 java inheritance interface

我有一个Java接口的基本问题.

如果我有一个interface IAinterface IB extends IA

现在,

class CK implements IB,
class CL implements IB,
class CM implements IB,
Run Code Online (Sandbox Code Playgroud)

......等

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 ?

}
Run Code Online (Sandbox Code Playgroud)

希望我的问题很明确.

谢谢你的回复.

Jon*_*eet 9

可以检查使用instanceof:

if (iFace instanceof CK)
Run Code Online (Sandbox Code Playgroud)

等等

...但是,如果你必须以不同的方式处理事情,这通常表明你的设计出了问题.接口的想法应该是您可以以相同的方式对待它们,并让实现以适当的方式表现不同.

它并不总是那样,所以有时候 instanceof你可以做到最好,但这应该是罕见的.