Kotlin - 访问派生类型中的伴随对象成员
Kotlin - accessing companion object members in derived types
给定以下代码:
open class Foo {
companion object {
fun fez() {}
}
}
class Bar : Foo() {
companion object {
fun baz() { fez() }
}
}
baz()
可以调用 fez()
- 我可以打电话给
Foo.fez()
- 我可以打电话给
Bar.baz()
- 但是,我不能调用
Bar.fez()
如何实现最终行为?
伴随对象是其周围对象的静态成员class:
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 对象没有该方法。
给定以下代码:
open class Foo {
companion object {
fun fez() {}
}
}
class Bar : Foo() {
companion object {
fun baz() { fez() }
}
}
baz()
可以调用fez()
- 我可以打电话给
Foo.fez()
- 我可以打电话给
Bar.baz()
- 但是,我不能调用
Bar.fez()
如何实现最终行为?
伴随对象是其周围对象的静态成员class:
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 对象没有该方法。