Io chiamo un metodo Java da C++ tramite JNI. Il metodo Java restituisce un enum STATUS. Ho già le jobjects che rappresentano le enumerazioni nel mio codice C++, come qui: https://stackoverflow.com/a/17441151/3352197Confronto dei riferimenti oggetto JNI
jclass clSTATUS = env->FindClass("MyClass$STATUS");
jfieldID fidONE = env->GetStaticFieldID(clSTATUS , "ONE", "LMyClass$STATUS;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);
Quindi, la chiamata
jobject o = env->CallObjectMethod(jTestobject, test);
restituisce un jobject che rappresenta uno stato enum, specialmente ONE. Quindi, come faccio a sapere quale enumerazione è stata restituita? Ho provato a confrontarlo con STATUS_ONE
, ma non corrispondono.
come hai confrontato 'o' con' STATUS_ONE'? – Samhain
solo con ==, ma potrebbe essere falso? Ho anche stampato entrambi, ma hanno diversi puntatori (o così). – sosnet
prova ad usare il metodo 'equals'. Non sono sicuro se 'env-> IsSameObject (o, STATUS_ONE)' lo chiami o meno – Samhain