【问题标题】:Java interface types basic questionJava接口类型基本问题
【发布时间】:2011-03-18 19:54:50
【问题描述】:

我有一个关于 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 ?

}

希望我的问题很清楚。

感谢您的任何回复。

【问题讨论】:

    标签: java inheritance interface


    【解决方案1】:

    可以使用instanceof进行检查:

    if (iFace instanceof CK)
    

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

    并非总是那样工作,所以有时instanceof是你能做到的最好的,但这应该很少见。

    【讨论】:

      【解决方案2】:

      您可以使用instanceof 关键字

      【讨论】:

      • 啊啊。应该考虑一下。谢谢!
      【解决方案3】:

      使用instanceof如下:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-02
        • 2015-03-07
        • 1970-01-01
        相关资源
        最近更新 更多