比较JNI对象引用

时间:2014-10-07 15:33:02

标签: java c++ java-native-interface

我通过JNI从c ++调用Java方法。 Java方法返回枚举STATUS。我已经在我的c ++代码中有代表枚举的jobject,如: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);

返回表示枚举状态的作业,特别是ONE。那么,我怎么知道它返回了哪个枚举? 我尝试将其与STATUS_ONE进行比较,但它们不匹配。

1 个答案:

答案 0 :(得分:8)

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

env->IsSameObject(o, STATUS_ONE);

谢谢!