首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 新手入门 >> 基础入门 >> 正文

java基础知识:KVM的扩展

    2.4 字符串类型、类描述符、字段描述符:

    这三项内容都是在本地方法中对于Java层对象的描述,比如用“[Ljava/lang/String;”来描述String数组,这些内容与JNI规范以及Java虚拟机规范中所定义的都完全一致,所以这里不再多说。

    3. KNI函数

    本节分类简介各种KNI函数的功能。大部分的函数功能比较容易理解,只有“参数传递”和“句柄操作”是比较特别的内容,将作详细讲解。

    3.1 版本信息:

    3.1.1 jint KNI_GetVersion()

    得到KNI的版本号。

    3.2 类和接口操作:

    3.2.1 void KNI_FindClass(const char* name, jclass classHandle)

    初始化一下指向某种对象的名柄,对象名字在name中。

    3.2.2 void KNI_GetSuperClass(jclass classHandle, jclass superclassHandle)

    取得超类的句柄。原类的句柄在classHandle中,调用后超类的名柄将被存放在superclassHandle中。如果classHandle指向一个java.lang.Object对象,则superclassHandle应为NULL.

    3.3.3 jboolean KNI_IsAssignableFrom(jclass classHandle1, jclass classHandle2)

    判断classHandle1类的对象是否能安全转换为classHandle2类的对象。

    3.3 异常:

    3.3.1 jint KNI_ThrowNew(const char* name, const char* message)

    抛异常,name是异常类的名字,message是所附带的信息。

    3.3.2 void KNI_FatalError(const char* message)

    出现致命错误时使用,向标准输出打印出错信息,并终止虚拟机。

    3.4 对象操作

    3.4.1 void KNI_GetObjectClass(jobject objectHandle, jclass classHandle)

    取得某对象所对属的类,objectHandle是对象句柄,调用后,类句柄将被存入classHandle中。

    3.4.2 jboolean KNI_IsInstanceOf(jobject objectHandle, jclass classHandle)

    判断句柄objectHandle所指向的对象是否是句柄classHandle所指向的类的实例。

    3.5 对象字段操作

    3.5.1 jfieldID KNI_GetFieldID(jclass classHandle, const char* name, const char* signature)

    取得类classHandle中由name和signature所指定的字段名。这个字段名的作用与JNI中的相同,是于在其它函数中读写字段的值。

    3.5.2 <NativeType> KNI_Get<Type>Field(jobject objectHandle, jfieldID fieldID)

    3.5.3 void KNI_Set<Type>Field(jobject objectHandle, jfieldID fieldID, <NativeType> value)

    上面两个方法分别用于读写<Type>类型字段的值,<Type>为基本类型。

    3.5.4 void KNI_GetObjectField(jobject objectHandle, jfieldID fieldID, jobject toHandle)

    3.5.5 void KNI_SetObjectField(jobject objectHandle, jfieldID fieldID, jobject fromHandle)

    上面两个方法分别用于读写对象。

    3.6 静态字段操作

    3.6.1 jfieldID KNI_GetStaticFieldID(jclass classHandle, const char* name, const char* signature)

    取得静态字段名。

    3.6.2 <NativeType> KNI_GetStatic<Type>Field(jclass classHandle, jfield fieldID)

    3.6.3 void KNI_SetStatic<Type>Field(jclass classHandle, jfieldID fieldID, <NativeType>value)

    上面两个方法分别用于读写<Type>类型静态字段的值,<Type>为基本类型。

    3.6.4 void KNI_GetStaticObjectField(jclass classHandle, jfield fieldID, jobject toHandle)

    3.6.5 void KNI_SetStaticObjectField(jclass classHandle, jfield fieldID, jobject fromHandle)

    上面两个方法分别用于读写静态对象。

    3.7 字符串操作

    3.7.1 jsize KNI_GetStringLength(jstring stringHandle)

    取得字符串长度。

    3.7.2 void KNI_GetStringRegion(jstring stringHandle, jsize offset, jsize n, jchar* jcharbuf)

    读取字符串内容。

    3.7.3 void KNI_NewString(const jchar* uchars, jsize length, jstring stringHandle)

    使用Unicode序列创建String.

    3.7.4 void KNI_NewStringUTF(const char* utf8chars, jstring stringHandle)

    使用UTF-8序列创建String.

 

上一页  [1] [2] [3] [4] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航