正在比较JNI对象引用

Comparing JNI object references

本文关键字:对象引用 JNI 比较      更新时间:2023-10-16

我通过JNI从c++调用Java方法。Java方法返回一个枚举STATUS。在我的c++代码中,我已经有了表示枚举的jobjects,如下所示:https://stackoverflow.com/a/17441151/3352197

jclass clSTATUS    = env->FindClass("MyClass$STATUS");
jfieldID fidONE    = env->GetStaticFieldID(clSTATUS , "ONE", "LMyClass$STATUS;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);

所以,呼叫

jobject o = env->CallObjectMethod(jTestobject, test);

返回一个表示枚举STATUS的jobject,特别是ONE。那么,我如何知道它返回了哪个枚举?我试图将它与STATUS_ONE进行比较,但它们不匹配。

在Samhain指出我可能的错误后,我自己找到了它。你只需要正确地比较对象:

env->IsSameObject(o, STATUS_ONE);

谢谢!