isCopy:指向布尔值的指针。
返回值: 返回指向数组元素的指针,如果操作失败,则为 NULL。 不管布尔数组在 Java 虚拟机中如何表示,GetBooleanArrayElements() 将始终返回一个 jbooleans 类型的指针,其中每一字节代表一个元素(开包表示)。内存中将确保所有其它类型。
Get
Release
void Release
功能:通知虚拟机平台相关代码无需再访问 elems 的一组函数。elems 参数是一个通过使用对应的Get
类型数组。mode参数将提供有关如何释放数组缓冲区的信息。如果elems 不是 array 中数组元素的副本,mode将无效。否则,mode 将具有下表所述的功能:
模式 动作
0 复制回内容并释放elems 缓冲区 JNI_COMMIT 复制回内容但不释放elems 缓冲区 JNI_ABORT 释放缓冲区但不复制回变化
多数情况下,编程人员将把“0”传给 mode 参数以确保固定的数组和复制的数组保持一致。其它选项可以使编程人员进一步控制内存管理,但使用时务必慎重。 使用说明:
将 ArrayType 替换为对应的数组类型。
将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array:Java 数组对象。 elems:指向数组元素的指针。 mode:释放模式。
Release
方法组 数组类型本地类型
ReleaseBooleanArrayElements() jbooleanArray jboolean ReleaseByteArrayElements() jbyteArray jbyte ReleaseCharArrayElements() jcharArray jchar
ReleaseShortArrayElements() jshortArray jshort ReleaseIntArrayElements() jintArray jint ReleaseLongArrayElements() jlongArray jlong ReleaseFloatArrayElements() jfloatArray jfloat ReleaseDoubleArrayElements() jdoubleArray jdouble
Get
void Get
功能:将基本类型数组某一区域复制到缓冲区中的一组函数。 使用说明:
将 Get
将 ArrayType 替换为对应的数组类型。 将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array:Java 指针。 start:起始下标。 len:要复制的元素数。 buf:目的缓冲区。
抛出: ArrayIndexOutOfBoundsException:如果区域中的某个下标无效。 方法族如下:
Get
void Set
功能:将基本类型数组的某一区域从缓冲区中复制回来的一组函数。 使用说明: 将 Set
将 ArrayType 替换为对应的数组类型。
将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array: Java 数组。 start:起始下标。 len:要复制的元素数。 buf:源缓冲区。
抛出: ArrayIndexOutOfBoundsException:如果区域中的某个下标无效。 Set
六、访问对象的属性和方法
1、实例属性的访问
jfieldID GetFieldID (JNIEnv *env, jclass clazz, const char *name, const char *sig);
功能:返回类的实例(非静态)域的属性 ID。该域由其名称及签名指定。访问器函数的Get
系列使用域 ID 检索对象域。GetFieldID() 不能用于获取数组的长度域。应使用GetArrayLength()。 参数: env:JNI 接口指针。 clazz:Java 类对象。 name: 该属性的Name名称