JNI筆記-域描述符

域描述符

1、基本類型描述符

Java Field Desciptor
int I
boolean Z
byte B
char C
long J
double D
float F
short S

除了boolean,和 long 對應的比較特殊外,其餘的是名稱前綴的大寫。

2、類描述符

L+包名+類名+;

注意“ ;”是不能省略的!
例如 String 的包名是 java.lang,那麼它對應的描述符就是

Ljava/lang/String;

注意java中的包名是用.分割的,jni中要替換成/

3、引用類型描述符

上面已經提到java類的描述符,如String對應的描述符是:Ljava/lang/String;
比較特殊的是 數組,格式是:

 [ + 描述符

其中,是幾維數組就有幾個“[”
比如:

//一維數組
int[]            [I
double[]         [D
String[]         [Ljava/lang/String;
User[]           [Lxxx/xxx/User;
Object[]         [Ljava/lang/Object;
//二維數組
float[][]        [[F
long[][]         [[J

4、方法描述符

格式:

(參數類型對應的描述符...+返回值類型對應的描述符

原方法的參數列表有多少個參數,對應的描述符的括號內就有多少個相應的描述符,且是按順序的,括號外面是方法返回值的描述符。

無參帶返回值:

public int getAge(){
	return age;
}

getAge的方法描述符則爲 ()I

帶參帶返回值:

public int getAge2(int age2){
	return age+age2;
}

getAge2的方法描述符則爲 (I)I

那如果一個方法的描述符爲(IF)D,那這個方法則是 double xxx(int i,float f)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章