java - 从JNI中的jclass获取jobobject

标签 java java-native-interface jnienv

我想知道是否有办法从 jclass 中获取 jobobject?我们可以从 JNIEnv 调用 GetObjectClass(object) 获取 jclass,但我找不到任何地方可以从 jclass 获取 jobject,反之亦然。在我的实现中,我使用 NewGlobalRef() 函数缓存 jclass 实例,但随后在新线程中我需要 jobject 来查找 MethodID。我没有办法获得该工作。我最终缓存了 jobobject。

最佳答案

不可能进行反向映射,因为类和对象之间不存在 1:1 的关系。 jclass 表示类型,而 jobject 表示实例。

因此可以从jobject获取jclass,因为它意味着“识别实例的类型”。但反向操作是无关紧要的。给定类型可能有多个实例,或者甚至可能没有给定类的实例。

如果稍后需要调用非静态方法,那么您必须记住对作业对象的引用。

关于java - 从JNI中的jclass获取jobobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540711/

相关文章:

java - jni native 函数重载签名

java - 将 Java 嵌入到 C++ 应用程序中?

java-native-interface - 带有 JNI 的 C++ 应用程序抛出错误 "jvm.dll not found . re-installing the application could fix ...."

java - Gwt 自定义文本框具有气球弹出窗口

java - 将一组垫传递给 native 代码

android - 为什么 Android jvm->GetEnv() 会为多个线程返回相同的 "env"。?

java - JNI 检测到应用程序错误 : the return type of CallObjectMethodV does not match void android. media.AudioTrack.play()

java - 如何查看 bukkit 插件中调用 setCancelled() 的类/插件?

java - 在 JavaFx 中实现倒计时器时遇到问题

java - 我想遍历页面的链接,但我的程序在中间终止而没有抛出任何错误