JNI中两个jobject怎么比较是同一个实例?急,在线等

hahu 2006-07-06 02:46:34
在C++中可以通过指针相同比较是否同一个实例,但是按照下面这样去匹配jobject却没用


// C++中创建一个本地化的java类
m_objHandler = m_env->NewObject(m_clsHandler, jmConstructor);

//上面这个类其中一个函数的C++实现
JNIEXPORT void JNICALL Java_JNISystemHandler_OnAddLog
(JNIEnv *env, jobject oThis, jstring logMsg, jobject logType)
{//因为会创建多个类实例,所以跟上面保存的m_objHandler比较,是否那个实例
if (oThis == m_objHandler)
; //匹配成功
else
; //匹配失败
}
结果总是匹配失败,知道java里面两个String比较用equals,但C++中的jobject怎么来比较呢
...全文
395 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahu 2006-07-08
  • 打赏
  • 举报
回复
sswater(光杆兵)为正解
没想到equals在java里面是Object的函数
谢谢楼上各位
wcmj 2006-07-07
  • 打赏
  • 举报
回复
用equals试试
低调的小青蛙 2006-07-06
  • 打赏
  • 举报
回复
IsSameObject 相当于在 java 中使用 ==,表示左右是同一个对象。
而 equals 的意思是,逻辑上相等,但并不要求一定是同一个对象。

如果搂主想要 equals 的效果,而不要 == 的效果,那么,搂住需要在 JNI 中调用 equals 方法。
低调的小青蛙 2006-07-06
  • 打赏
  • 举报
回复
jobject 是 pEnv->NewGlobalRef 返回的结果,对同一个对象的多个引用 jobject 是不同的,但引用的可能是同一个对象。

要判断两个 jobject 使用引用同一个对象,使用 pEnv->IsSameObject 方法。

PS:邀请搂主关注与 JNI 相关的免费工具:(国人写的)
http://www.regexlab.com/jar2exe/
xiaoyan0413 2006-07-06
  • 打赏
  • 举报
回复
重载==

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧