本地方法(JNI)——编码签名
生活随笔
收集整理的這篇文章主要介紹了
本地方法(JNI)——编码签名
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【0】README
1) 本文部分文字描述 轉自 core java volume 2 , 旨在理解 本地方法(JNI)——編碼簽名 的基礎知識 ;
【1】編碼簽名相關
1) 混編規則:為了訪問實例域和調用用 java 定義的方法,你必須學習將數據類型的名稱和方法簽名進行混編的規則;
2)方法簽名: 描述了參數和該方法返回值的類型;(干貨——方法簽名的定義)
3)下面是編碼方案:
B==byte
C==char
D==double
F==float
I==int
J==long
Lclassname== 類的類型
S==short
V==void
Z==boolean;
4)幾個荔枝:
- 4.1) 為了描述數組類型, 使用: [Ljava/lang/String;
- 4.2)一個float[][] 可以描述為: [[F;
- 4.3)要建立一個方法的完整簽名, 需要吧括號內的參數類型都列出來, 然后列出返回值類型, 如: 一個接收兩個整型參數并返回一個整數的方法編碼為: (II)I;
- 4.4)在前一個荔枝中, 我們使用的print 方法的簽名是: (Ljava/lang/String;)V == 該方法接收一個字符串,返回值是 void;
Attention) 在 L 表達式結尾處的分號:是類型表達式的終止符, 而不是參數間的分隔符;
- A1)看個荔枝:構造器Employee(java.lang.String, double, java.util.Date),具有如下簽名:”(Ljava/lang/String;DLjava/util/Date;)V”
- A2)注意,在D 和 Ljava/util/Date; 之間沒有分隔符;
- A3)另外要注意在這個編碼方案中, 必須用 / 代替圓點 來分割包和類名;
- A4)結尾的V 表示返回類型為 void, 即使對 java 的構造器沒有指定返回類型, 也需要將V 添加到 虛擬機簽名中;
5)看個荔枝: 用帶有選項 -s 的 javap 命令來從類文件中產生方法簽名。如,運行 javap -s -private Employee
總結
以上是生活随笔為你收集整理的本地方法(JNI)——编码签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上古卷轴5黎明符文战锤(上古卷轴5特殊的
- 下一篇: 电脑手机定位好帮手电脑如何定位手机