我将我的一个 Java 类转换为 Kotlin 和下面的类。
class MainApplication : Application() {
companion object {
operator fun get(context: Context): MainApplication {
return context.applicationContext as MainApplication
}
}
}
它有一个静态函数get
。
我还有一个 Java 函数可以访问它。
MainApplication application = MainApplication.get(mContext);
当 MainApplication 是 Java 时很好。但是Kotlin中MainApplication的时候不行,上面的代码报错
Error:(27, 54) error: cannot find symbol method get(Context)
如何在上面的 Java 代码中访问 get
?
最佳答案
您可以添加@JvmStatic
对伴随对象中的方法进行注解,使 Kotlin 生成静态方法。
class MainApplication : Application() {
companion object {
@JvmStatic fun get(context: Context): MainApplication {
return context.applicationContext as MainApplication
}
}
}
然后您可以像在转换为 Kotlin 之前一样从 Java 访问它:
MainApplication application = MainApplication.get(mContext);
编辑:我觉得有必要添加一些我最近学到的东西:@JvmStatic
实际上并没有move 生成方法的位置。除了伴生对象上的方法之外,它还通过为 Java 生成静态方法来复制它。我个人认为这不是很好,它可能会根据用例产生一些影响,所以值得了解。
https://stackoverflow.com/questions/38120494/