Native Method中操作Java对象的属性为数组时的处理

    很简单,接口用的是SetObjectField,因为数组也是对象,在jni.h中,jarray和jobject是一个东西。

    如,在java类中有一个属性short [] aPid;,在native method中,我们如下做:

jclass _pmClass = (*env)->GetObjectClass(env, program); //找到对象参数program的类

jfieldID _auID  =   (*env)->GetFieldID(env, _pmClass, "aPid", "[S"); //找到类型为short []的数组aPid

jshortArray _pidArray = (*env)->NewShortArray(env, MAX_AUDIO_NUM); //新建一个本地的shortArray

(*env)->SetShortArrayRegion(env, _pidArray, 0, _auIndex, _aArray);//设置内容为本地已经填好数据的一个jshort型数组_aArray,_auIndex是该数组数据的长度

(*env)->SetObjectField(env, program, _auID, _pidArray);//把这个_pidArray设置为aPid的值

(*env)->DeleteLocalRef(env, _pidArray);//删除本地引用

你可能感兴趣的:(java,java,java,jni,jni)