域描述符
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)
。