Tôi gọi một phương thức Java từ C++ qua JNI. Phương thức Java trả về một STATUS enum. Tôi đã có jobjects đại diện cho enums trong c của tôi ++ mã như ở đây: https://stackoverflow.com/a/17441151/3352197So sánh các tham chiếu đối tượng JNI
jclass clSTATUS = env->FindClass("MyClass$STATUS");
jfieldID fidONE = env->GetStaticFieldID(clSTATUS , "ONE", "LMyClass$STATUS;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);
Vì vậy, cuộc gọi
jobject o = env->CallObjectMethod(jTestobject, test);
trả về một jobject đại diện cho một TÌNH TRẠNG enum, đặc biệt ONE. Vì vậy, làm thế nào để tôi biết enum nó đã trở lại? Tôi đã cố gắng so sánh nó với STATUS_ONE
, nhưng chúng không khớp.
bạn so sánh 'o' với' STATUS_ONE' bằng cách nào? – Samhain
chỉ với ==, nhưng điều này có thể là sai? Tôi cũng in cả hai, nhưng chúng có các con trỏ khác nhau (hoặc hơn). – sosnet
thử sử dụng phương thức 'equals'. Bạn không chắc chắn nếu 'env-> IsSameObject (o, STATUS_ONE)' gọi là có hay không – Samhain