比较JNI对象引用

9

我通过JNI从c++调用了一个Java方法。这个Java方法返回一个枚举STATUS。在我的c++代码中,我已经有表示枚举的jobjects,就像这里所示:https://dev59.com/Jmgu5IYBdhLWcg3wln8O#17441151

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);

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


你是如何将 oSTATUS_ONE 进行比较的? - Samhain
仅使用 == 可能是错误的,我也打印了两个,但它们具有不同的指针(或者说是这样)。 - sosnet
尝试使用equals方法。不确定env->IsSameObject(o,STATUS_ONE)是否调用了它。 - Samhain
1个回答

12

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

env->IsSameObject(o, STATUS_ONE);

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接