从 JNI 中的 jclass 获取 jobject
Get jobject from jclass in JNI
我想知道是否有办法从 jclass 中获取 jobject?我们可以从 JNIEnv 调用 GetObjectClass(object) 获取 jclass,但我找不到任何地方可以从 jclass 获取 jobject,反之亦然。在我的实现中,我使用 NewGlobalRef() 函数缓存了 jclass 实例,但是在新线程中我需要 jobject 来查找 MethodID。我没有办法得到这个工作。我最终缓存了 jobject。
无法进行反向映射,因为 classes 和对象之间不是 1 : 1 的关系。 jclass
表示类型,而 jobject
表示实例。
所以可以从 jobject
中得到 jclass
,因为它表示 "Identify the type of the instance"。但反向操作无关紧要。给定类型可能有多个实例,甚至可能没有给定 class.
的实例
如果稍后需要调用非静态方法,则必须记住对 jobject
.
的引用
我想知道是否有办法从 jclass 中获取 jobject?我们可以从 JNIEnv 调用 GetObjectClass(object) 获取 jclass,但我找不到任何地方可以从 jclass 获取 jobject,反之亦然。在我的实现中,我使用 NewGlobalRef() 函数缓存了 jclass 实例,但是在新线程中我需要 jobject 来查找 MethodID。我没有办法得到这个工作。我最终缓存了 jobject。
无法进行反向映射,因为 classes 和对象之间不是 1 : 1 的关系。 jclass
表示类型,而 jobject
表示实例。
所以可以从 jobject
中得到 jclass
,因为它表示 "Identify the type of the instance"。但反向操作无关紧要。给定类型可能有多个实例,甚至可能没有给定 class.
如果稍后需要调用非静态方法,则必须记住对 jobject
.