JNI(3)

JNI(3)

基本类型

java 基本类型和 原始机器类型

Java Type
Native Type
Description
boolean
jboolean
unsigned 8 
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

N/Ajava


引用类型

JNI包含必定数量的与java对象已对应的引用类型


在C中,全部其余引用类型的定义是同样的:
typedef jobject jclass;

在C++中,JNI介绍一个套虚的类来增强与子类的关系:
class _jobject {};
class _jclass : public _jobject {};
...
typedef _jobject *jobject;
typedef _jclass *jclass;

字段和方法IDs

方法和字段ids是普通的C类型指针:
struct _jfieldID;              /* opaque structure */
typedef struct _jfieldID *jfieldID;   /* field IDs */

struct _jmethodID;              /* opaque structure */
typedef struct _jmethodID *jmethodID; /* method IDs */

值类型

jvalue 联合类型一般做为参数数组的元素类型。声明以下:
typedef union jvalue {
    jboolean z;
    jbyte    b;
    jchar    c;
    jshort   s;
    jint     i;
    jlong    j;
    jfloat   f;
    jdouble  d;
    jobject  l;
} jvalue;

类型标志

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
例如:java 方法:
long f (int n, String s, int[] arr);
对应的类型标识
(ILjava/lang/String;[I)J

修改UTFf-8的字符串

JNI使用修改的UTF-8字符串来表明不一样的字符串类型。Java VM一样能够使用修改的UTF-8字符串。修改后的UTF-8字符串已编码过的,字符序列只包含非空的ASCII字符,每一个字符能够只使用一个字节表明。
本站公众号
   欢迎关注本站公众号,获取更多信息