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

2019-08-02 00:43

功能:清除当前抛出的任何异常。如果当前无异常,则此例程不产生任何效果。 参数: env JNI 接口指针。

void FatalError (JNIEnv *env, const char *msg);

功能:抛出致命错误并且不希望虚拟机进行修复。该函数无返回值。 参数: env JNI 接口指针。 msg 错误消息。

////////////////////////////////////////////////////////////////////////////////////////////////////////////// 三、全局及局部引用

jobject NewGlobalRef (JNIEnv *env, jobject obj);

功能:创建 obj 参数所引用对象的新全局引用。obj 参数既可以是全局引用,也可以是局部引用。全局引用通过调用DeleteGlobalRef() 来显式撤消。 参数:env JNI 接口指针。 obj 全局或局部引用。

返回值: 返回全局引用。如果系统内存不足则返回 NULL。

void DeleteGlobalRef (JNIEnv *env, jobject globalRef); 功能: 删除 globalRef 所指向的全局引用。 参数: env JNI 接口指针。 globalRef 全局引用。

void DeleteLocalRef (JNIEnv *env, jobject localRef); 功能: 删除 localRef所指向的局部引用。

参数: env JNI 接口指针。 localRef 局部引用。

///////////////////////////////////////////////////////////////////////////////////////////////////////////

四、对象操作

jobject AllocObject (JNIEnv *env, jclass clazz);

功能:分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。clazz 参数务必不要引用数组类。 参数: env JNI 接口指针。 clazz Java 类对象。

返回值: 返回 Java 对象。如果无法构造该对象,则返回NULL。 抛出: InstantiationException:如果该类为一个接口或抽象类。

OutOfMemoryError:如果系统内存不足。

jobject NewObject (JNIEnv *env , jclass clazz, jmethodID methodID, ...); //参数附加在函数后面

jobject NewObjectA (JNIEnv *env , jclassclazz, jmethodID methodID, jvalue *args); //参数以指针形式附加

jobjec tNewObjectV (JNIEnv *env , jclassclazz, jmethodID methodID, va_list args); //参数以\链表\形式附加

功能:构造新 Java 对象。方法 ID指示应调用的构造函数方法。注意:该 ID特指该类class的构造函数ID , 必须通过调用

GetMethodID() 获得,且调用时的方法名必须为 ,而返回类型必须为 void (V)。clazz参数务必不要引用数组类。 参数: env JNI 接口指针。 clazz Java 类对象。

methodID 构造函数的方法 ID。

NewObject 的其它参数: 传给构造函数的参数,可以为空 。 NewObjectA 的其它参数: args:传给构造函数的参数数组。 NewObjectV 的其它参数: args:传给构造函数的参数 va_list。 返回值: 返回 Java 对象,如果无法构造该对象,则返回NULL。 抛出: InstantiationException 如果该类为接口或抽象类。 OutOfMemoryError 如果系统内存不足。 构造函数抛出的任何异常。

jclass GetObjectClass (JNIEnv *env, jobject obj); 功能:返回对象的类。 参数: env JNI 接口指针。

obj Java 对象(不能为 NULL)。 返回值: 返回 Java 类对象。

jboolean IsInstanceOf (JNIEnv *env, jobject obj, jclass clazz); 功能:测试对象是否为某个类的实例。 参数: env JNI 接口指针。 obj Java 对象。

clazz Java 类对象。

返回值:如果可将 obj 强制转换为 clazz,则返回 JNI_TRUE。否则返回 JNI_FALSE。NULL 对象可强制转换为任何类。

jbooleanIsSameObject (JNIEnv *env, jobjectref1, jobject ref2); 功能:测试两个引用是否引用同一Java 对象。 参数: env JNI 接口指针。 ref1 Java 对象。 ref2 Java 对象。

返回值: 如果 ref1 和 ref2 引用同一 Java 对象或均为 NULL,则返回 JNI_TRUE。否则返回 JNI_FALSE。

/////////////////////////////////////////////////////////////////////////////////////////////////////////// 五、 字符串操作

jstring NewString (JNIEnv *env, const jchar *unicodeChars, jsize len); 功能:利用 Unicode 字符数组构造新的 java.lang.String 对象。 参数: env:JNI 接口指针。

unicodeChars:指向 Unicode 字符串的指针。 len:Unicode 字符串的长度。

返回值: Java 字符串对象。如果无法构造该字符串,则为NULL。 抛出: OutOfMemoryError:如果系统内存不足。

jsize GetStringLength (JNIEnv *env, jstring string); 功能:返回 Java 字符串的长度(Unicode 字符数)。

参数: env:JNI 接口指针。

string:Java 字符串对象。 返回值: Java 字符串的长度。

const jchar * GetStringChars (JNIEnv*env, jstring string, jboolean *isCopy);

功能:返回指向字符串的 Unicode 字符数组的指针。该指针在调用 ReleaseStringchars() 前一直有效。

如果 isCopy 非空,则在复制完成后将 *isCopy 设为 JNI_TRUE。如果没有复制,则设为JNI_FALSE。 参数: env:JNI 接口指针。 string:Java 字符串对象。 isCopy:指向布尔值的指针。

返回值: 指向 Unicode 字符串的指针,如果操作失败,则返回NULL。

void ReleaseStringChars (JNIEnv *env, jstring string, const jchar *chars);

功能:通知虚拟机平台相关代码无需再访问 chars。参数chars 是一个指针,可通过 GetStringChars() 从 string 获得。 参数: env:JNI 接口指针。 string:Java 字符串对象。

chars:指向 Unicode 字符串的指针。


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

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

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

马上注册会员

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