JNI Types and Data Structures
1、下表描述了Java基本类型在C++中对应的本地类型:
| Java Type | Native Type | Description |
|---|---|---|
| boolean | jboolean | unsigned 8 bits |
| byte | jbyte | signed 8 bits |
| char | jchar | unsigned 16 bits |
| short | jshort | signed 16 bits |
| int | jint | signed 32 bits |
| long | jlong | signed 64 bits |
| float | jfloat | 32 bits |
| double | jdouble | 64 bits |
| void | void | not applicable |
- 为了方便起见,提供了以下定义:
#define JNI_TRUE 1
#define JNI_FALSE 0
- jsize类型用于描述基数索引和大小:
typedef jint jsize;
2、JNI包括许多与不同类型的Java对象相对应的引用类型:
| Java Type | Native Type | Description |
|---|---|---|
| Object | jobject | Java对象 |
| Class | jclass | Class类型 |
| String | jstring | 字符串 |
| Object[] | jobjectArray | 对象类型数组 |
| boolean[] | jbooleanArray | 布尔型数组 |
| byte[] | jbyteArray | 字节数组 |
| char[] | jcharArray | 字符型数组 |
| short[] | jshortArray | 短整型数组 |
| int[] | jintArray | 整形数组 |
| long[] | jlongArray | 长整型数组 |
| float[] | jfloatArray | 浮点型数组 |
| double[] | jdoubleArray | 双浮点型数组 |
3、值类型
jvalue联合类型用作参数数组中的元素类型。声明如下:
typedef union jvalue {
jboolean z;
jbyte b;
jchar c;
jshort s;
jint i;
jlong j;
jfloat f;
jdouble d;
jobject l;
} jvalue;
4、类型签名
JNI使用Java VM的类型签名表示。
| Type Signature | Java Type |
|---|---|
| Z | boolean |
| B | byte |
| C | char |
| S | short |
| I | int |
| J | long |
| F | float |
| D | double |
| L fully-qualified-class ; | fully-qualified-class |
| [ type | type[] |
| ( arg-types ) ret-type | method type |
参考自:JNI调用C++方法指南

浙公网安备 33010602011771号