JNI Types and Data Structures

1、下表描述了Java基本类型在C++中对应的本地类型:

Java TypeNative TypeDescription
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 TypeNative TypeDescription
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 SignatureJava 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++方法指南

    Java native interface

 

posted @ 2025-01-07 10:29  Plus301  阅读(1)  评论(0编辑  收藏  举报