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++方法指南