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字符,每一個字符能夠只使用一個字節表明。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息