从 jobject 到 jboolean 的转换失去了精度

Dan*_*ani 7 c++ java-native-interface

我正在尝试将 jobject 转换为 jboolean

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

得到这个编译错误:

从 'jobobject {aka _jobject*}' 转换为 'jboolean {aka unsigned char}' 失去精度 [-fpermissive]

这是什么意思,该怎么做?

dae*_*mie 5

对于在使用时遇到错误的任何其他人 CallObjectMethod

error: cast from pointer to smaller type 'jboolean' (aka 'unsigned char') loses information
Run Code Online (Sandbox Code Playgroud)

调用返回布尔值的方法的正确方法 CallObjectMethod

所以这里的答案是:

改变

 jboolean val = (jboolean)env->CallObjectMethod(object, mGet , key);
Run Code Online (Sandbox Code Playgroud)

jboolean val = (jboolean)env->CallBooleanMethod(object, mGet , key);
Run Code Online (Sandbox Code Playgroud)