如何从Kotlin调用静态JNI函数?

Gáb*_*bor 5 java-native-interface kotlin

在Java中这不是问题,但是在Kotlin中,我们没有静态的。我们有用于相同目的的伴随对象,但是,作为额外的对象,它们在JNI调用中得到了错误的名称(Java_package_Type00024Companion_function),这与JNI期望的不匹配。从主类调用它显然会导致的JNI错误GetStaticMethodID

Spe*_*ark 5

所述@JvmStatic注释可以被添加到同伴对象上定义的函数,以使一个静态方法的产生,其可以参考在你JNI调用。

从链接的Kotlin文档中:

class C {
  companion object {
    @JvmStatic fun callStatic() {}
    fun callNonStatic() {}
  }
}
Run Code Online (Sandbox Code Playgroud)
class C {
  companion object {
    @JvmStatic fun callStatic() {}
    fun callNonStatic() {}
  }
}
Run Code Online (Sandbox Code Playgroud)