很简单,接口用的是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);//删除本地引用
本文介绍如何使用JNI在本地方法中操作Java中的short数组。通过具体步骤演示了如何获取数组字段ID、创建新的短整型数组、填充数据并将其设置为Java对象的成员变量。
17万+

被折叠的 条评论
为什么被折叠?



