2015-09-11 68 views
1

我想投jobject到jboolean投失去精度

jmethodID mGet = env->GetMethodID(cJsonObjClass, "get","(Ljava/lang/String;)Ljava/lang/Object;");  
    jboolean val = (jboolean)env->CallObjectMethod(object, mGet , key); 

收到此編譯錯誤:

cast from 'jobject {aka _jobject*}' to 'jboolean {aka unsigned char}' loses precision [-fpermissive]

是什麼意思,做些什麼?

+1

_「我正在試圖將jobject投射到jboolean」_。別。一個'jboolean'對應於Java類型'boolean',它是一個原語,而不是一個Object。你必須展示更多的代碼,讓某人能夠說出正確的方法是什麼(例如'object'的類型是什麼?'Get'方法的簽名是什麼?......) – Michael

+0

對象是json對象 我解決它通過替換get方法getBoolean – Dania

回答

0

爲別人誰得到的錯誤,而使用CallObjectMethod

error: cast from pointer to smaller type 'jboolean' (aka 'unsigned char') loses information 

正確的方法調用,它返回一個布爾值IST的方法使用CallObjectMethod

所以這裏的答案是:

變更

jboolean val = (jboolean)env->CallObjectMethod(object, mGet , key); 

jboolean val = (jboolean)env->CallBooleanMethod(object, mGet , key);