JNI学习积累之一 - - 常用函数大全(4)

2019-08-02 00:43

isCopy:指向布尔值的指针。

返回值: 返回指向数组元素的指针,如果操作失败,则为 NULL。 不管布尔数组在 Java 虚拟机中如何表示,GetBooleanArrayElements() 将始终返回一个 jbooleans 类型的指针,其中每一字节代表一个元素(开包表示)。内存中将确保所有其它类型。

GetArrayElements 例程数组类型 本地类型 GetBooleanArrayElements() jbooleanArray jboolean GetByteArrayElements() jbyteArray jbyte GetCharArrayElements() jcharArray jchar GetShortArrayElements() jshortArray jshort GetIntArrayElements() jintArray jint GetLongArrayElements() jlongArray jlong GetFloatArrayElements() jfloatArray jfloat GetDoubleArrayElements() jdoubleArray jdouble

ReleaseArrayElements 方法类型

void ReleaseArrayElements (JNIEnv *env, ArrayType array, NativeType *elems,jint mode);

功能:通知虚拟机平台相关代码无需再访问 elems 的一组函数。elems 参数是一个通过使用对应的GetArrayElements() 函数由 array 导出的指针。必要时,该函数将把对 elems 的修改复制回基本

类型数组。mode参数将提供有关如何释放数组缓冲区的信息。如果elems 不是 array 中数组元素的副本,mode将无效。否则,mode 将具有下表所述的功能:

模式 动作

0 复制回内容并释放elems 缓冲区 JNI_COMMIT 复制回内容但不释放elems 缓冲区 JNI_ABORT 释放缓冲区但不复制回变化

多数情况下,编程人员将把“0”传给 mode 参数以确保固定的数组和复制的数组保持一致。其它选项可以使编程人员进一步控制内存管理,但使用时务必慎重。 使用说明:

将 ArrayType 替换为对应的数组类型。

将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array:Java 数组对象。 elems:指向数组元素的指针。 mode:释放模式。

ReleaseArrayElements

方法组 数组类型本地类型

ReleaseBooleanArrayElements() jbooleanArray jboolean ReleaseByteArrayElements() jbyteArray jbyte ReleaseCharArrayElements() jcharArray jchar

ReleaseShortArrayElements() jshortArray jshort ReleaseIntArrayElements() jintArray jint ReleaseLongArrayElements() jlongArray jlong ReleaseFloatArrayElements() jfloatArray jfloat ReleaseDoubleArrayElements() jdoubleArray jdouble

GetArrayRegion 方法类型

void GetArrayRegion (JNIEnv *env, ArrayType array, jsize start, jsize len, NativeType *buf);

功能:将基本类型数组某一区域复制到缓冲区中的一组函数。 使用说明:

将 GetArrayRegion 替换为下表的某个实际基本类型元素访问器例程名。

将 ArrayType 替换为对应的数组类型。 将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array:Java 指针。 start:起始下标。 len:要复制的元素数。 buf:目的缓冲区。

抛出: ArrayIndexOutOfBoundsException:如果区域中的某个下标无效。 方法族如下:

GetArrayRegion方法 数组类型 本地类型 GetBooleanArrayRegion() jbooleanArray jboolean GetByteArrayRegion() jbyteArray jbyte GetCharArrayRegion() jcharArray jchar GetShortArrayRegion() jshortArray jhort GetIntArrayRegion() jintArray jint GetLongArrayRegion() jlongArray jlong GetFloatArrayRegion() jfloatArray jloat GetDoubleArrayRegion() jdoubleArray jdouble SetArrayRegion 方法类型

void SetArrayRegion (JNIEnv *env, ArrayType array, jsize start, jsize len, NativeType *buf);

功能:将基本类型数组的某一区域从缓冲区中复制回来的一组函数。 使用说明: 将 SetArrayRegion 替换为表中的实际基本类型元素访问器例程名。

将 ArrayType 替换为对应的数组类型。

将 NativeType 替换为该例程对应的本地类型。 参数: env:JNI 接口指针。 array: Java 数组。 start:起始下标。 len:要复制的元素数。 buf:源缓冲区。

抛出: ArrayIndexOutOfBoundsException:如果区域中的某个下标无效。 SetArrayRegion 方法族 数组类型 本地类型 SetBooleanArrayRegion() jbooleanArray jboolean SetByteArrayRegion() jbyteArray jbyte SetCharArrayRegion() jcharArray jchar SetShortArrayRegion() jshortArray jshort SetIntArrayRegion() jintArray jint SetLongArrayRegion() jlongArray jlong SetFloatArrayRegion() jfloatArray jfloat SetDoubleArrayRegion() jdoubleArray jdouble ///////////////////////////////////////////////////////////////////////////////////////////////////////////

六、访问对象的属性和方法

1、实例属性的访问

jfieldID GetFieldID (JNIEnv *env, jclass clazz, const char *name, const char *sig);

功能:返回类的实例(非静态)域的属性 ID。该域由其名称及签名指定。访问器函数的GetField 及 SetField

系列使用域 ID 检索对象域。GetFieldID() 不能用于获取数组的长度域。应使用GetArrayLength()。 参数: env:JNI 接口指针。 clazz:Java 类对象。 name: 该属性的Name名称


JNI学习积累之一 - - 常用函数大全(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:体育大课间活动安排表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: