在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怎么来比较呢
// 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怎么来比较呢
http://www.regexlab.com/jar2exe/
而 equals 的意思是,逻辑上相等,但并不要求一定是同一个对象。如果搂主想要 equals 的效果,而不要 == 的效果,那么,搂住需要在 JNI 中调用 equals 方法。
没想到equals在java里面是Object的函数
谢谢楼上各位