Kotlin - 访问派生类型中的伴随对象成员

时间:2017-11-14 22:14:24

标签: kotlin companion-object

给出以下代码:

open class Foo {
    companion object {
        fun fez() {}
    }
}

class Bar : Foo() {
    companion object {
        fun baz() { fez() }
    }
}
  • baz()可以致电fez()
  • 我可以致电Foo.fez()
  • 我可以致电Bar.baz()
  • 但是,我无法致电Bar.fez()

我如何实现最终行为?

1 个答案:

答案 0 :(得分:0)

伴侣对象是其周围类的静态成员:

public class Foo {
   public static final Foo.Companion Companion;

   public static final class Companion {
      public final void fez() {
      }

     //constructors
   }
}

fez()的调用编译为:

Foo.Companion.fez();

仅供参考:显示的Java代码显示了Kotlin生成的字节码的表示。

因此,您无法调用Bar.fez(),因为Bar中的Companion对象没有该方法。