比较JNI对象引用 [英] Comparing JNI object references

查看:82
本文介绍了比较JNI对象引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I call a Java method from c++ via JNI. The Java method returns an enum STATUS. I already have the jobjects representing the enums in my c++ code like here: 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)的Jobject.那么,我怎么知道它返回了哪个枚举? 我试图将其与STATUS_ONE进行比较,但它们不匹配.

returns a jobject representing an enum STATUS, specially ONE. So, how do I know which enum it has returned? I tried to compare it to STATUS_ONE, but they do not match.

推荐答案

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

Found it by myself, after Samhain pointed out my possible mistake. You just have to compare the objects correctly:

env->IsSameObject(o, STATUS_ONE);

谢谢!

这篇关于比较JNI对象引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆