Сравнение ссылок на объекты JNI
Я вызываю метод Java из C++ через JNI. Метод Java возвращает перечисление STATUS. У меня уже есть рабочие места, представляющие перечисления в моем коде C++, как здесь: /questions/8124318/kak-vernut-enum-iz-jni/8124330#8124330
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);
возвращает объект задания, представляющий перечисление STATUS, особенно ONE. Итак, как мне узнать, какое перечисление вернулось? Я пытался сравнить это с STATUS_ONE
, но они не совпадают.
1 ответ
Решение
Нашел это сам, после того, как Самайн указал на мою возможную ошибку. Вам просто нужно правильно сравнить объекты:
env->IsSameObject(o, STATUS_ONE);
Спасибо!