从JNI的Jclass获取jobject

时间:2016-11-11 03:35:08

标签: java java-native-interface jnienv

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

1 个答案:

答案 0 :(得分:1)

由于类和对象之间没有1:1的关系,因此无法进行反向映射。 jclass代表一种类型,而jobject代表一个实例。

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

如果您以后需要使用非静态方法调用,则必须记住对jobject的引用。