从jobobject转换为jboolean会失去精度

cast from jobject to jboolean loses precision

本文关键字:失去 精度 jboolean jobobject 转换      更新时间:2023-10-16

我正在尝试将jobobject转换为jboolean

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

得到编译错误:

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

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

对于使用CallObjectMethod时出现错误的任何人

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

调用返回布尔列表的方法以使用CallObjectMethod

的正确方法

所以答案是:

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

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