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怎么来比较呢
...全文
171 点赞 收藏 5
写回复
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日
重载==
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告