1

是否可以更改此代码片段以使 SetLongField 变为 setIntField ?

jobject nbField ;
UL l_ul_NbField ;

jclass longClass = i_env->GetObjectClass(nbField);
jfieldID val = i_env->GetFieldID(longClass, "value", "J");
i_env->SetLongField(nbField, val, (L)l_ul_NbField);

当我做 :

jclass intClass = i_env->GetObjectClass(nbField);
jfieldID val = i_env->GetFieldID(intClass, "value", "I");
i_env->SetIntField(nbField, val, (I)l_ul_NbField);

崩溃了!为什么 ?

4

1 回答 1

0

你能确定 nbField 是什么类型吗?如果 nbField 的类型为 Long,则i_env->GetFieldID(intClass, "value", "I");返回 null,因此调用 setIntField 会导致崩溃。

于 2013-05-30T04:45:56.047 回答