使用C/C++实现Java的Native方法接口(JNI)(4)JNI数据类型

JNI编程(C/C++)

第1节:快速上手

一个简单的demo,快速跑通流程,详见使用C/C++实现Java的Native方法接口(JNI)(1)快速上手

第2节:实例详解(C语言版本)

本节针对第1节中的内例子详细说明(C),详见使用C/C++实现Java的Native方法接口(JNI)(2)实例详解(C语言版本)

第3节:实例详解(C++语言版本)

本节针对第1节中的内例子详细说明(C++),详见使用C/C++实现Java的Native方法接口(JNI)(3)实例详解(C++语言版本)

第4节:JNI数据类型

Java里的数据类型分为primitive、Object以及[]型的数组。

Java的8种基础数据类型与C基础数据类型在jni.h里的映射关系如下:

Java primitive types C primitive types JNI typedef
int long jint
long _int64 jlong
byte signed char jbyte
boolean unsigned char jboolean
char unsigned short jchar
short short jshort
float float jfloat
double double jdouble

此外,jni.h里也定义了java的Object类的映射关系,虽然Class、String、Throwable等的最终超类都是Object,但是由于比较常用,因此有单独的定义和操作方法

Java object type C type (defined in JNI) JNI typedef
Object _jobject* jobject
Class _jclass* jclass
Throwable _jthrowable* jthrowable
String _jstring* jstring
[] _jarray* jarray

注意,此处的jarray不是Array类,Array类会被映射为普通的Object,而是原始的用[]定义的数组。

基础数据类型不用赘述,因为这些在C都有对应的原生类型,主要看对于Object类型的数据相关的方法

第5节:jstring类和jobject类的等对象数据的方法

本节详细描述了JNI中最常用的jstring(java.lang.String)和jobject (Obejct)的相关操作方法,详见使用C/C++实现Java的Native方法接口(JNI)(5)jstring类和jobject类的等对象数据的方法

第6节:多种JNI数据类型的代码实例

本节结合前面1-5节的内容,编写了一个包含多种数据类型的实例JNI-C++代码,详见使用C/C++实现Java的Native方法接口(JNI)(6)多种JNI数据类型代码实例

附录:代码

整个项目的资源打包链接:JNI_C/C++_Demo

猜你喜欢

转载自blog.csdn.net/O_1CxH/article/details/125587980