在doc中,可以用Java调用kotlin静态函数:
class C {
companion object {
@JvmStatic fun foo() {}
fun bar() {}
}
}
C.foo(); // works fine
C.bar(); // error
C.INSTANCE.bar(); // works, a call through the singleton instance
C.INSTANCE.foo(); // works too
但是对我来说,如果没有'companion'
,它将无法正常工作
kotlin代码
class MyClass {
companion object {
@JvmStatic fun test(category: String, otherType: OtherType) {
... ...
}
}
}
在Java代码中调用静态test()函数,
MyClass.Companion.test("", OtherType()) //<== works
MyClass.test("", OtherType()) //<== error, "Cannot resolve method 'test(String, ..."
我可能还会错过什么?
答案 0 :(得分:0)
注释@JvmStatic
告诉Kotlin编译器为类MyClass
生成一个静态方法,因此MyClass.Companion.test(...)
和MyClass.test("", OtherType())
都可以工作。
没有@JvmStatic
的情况下,只有MyClass.Companion.test(...)
起作用,因为编译器不会生成MyClass.test(...)
答案 1 :(得分:0)
在其他项目中遇到类似问题,但是在删除该项目并重新克隆之后,同步后问题就消失了。