Java dos命令窗口獲取方法的簽名

內容:

演示如何獲取一個方法的簽名。在JNI中,如果C語言要調用Java模塊,必定要用到反射技術(詳情),而在反射技術中,必須要用到簽名才能讓C語言獲取Java的方法。

小技巧:dos命令窗口裏面無法複製,只要鼠標點擊右鍵–》標記,然後光標就會變大,就可以選中複製區域,ctrl+c 就可以了。

步驟:

1.創建一個Java項目

目錄結構如下

這裏寫圖片描述

在該項目中創建一個類,該類如下:

package hhh.exercise.test;

public class Test {

    public void method1() {
        System.out.println("調用了show方法");
    }

    public int method2(int i) {
        return i;
    }

    public String method3(String string) {
        return string;
    }
}

2.控制檯語句

到帶該項目所在目錄,然後到bin目錄下(…JavaTest\bin),該目錄下\hhh\exercise\test裏面有字節碼文件。然後在這裏打開控制檯,如下所示:

這裏寫圖片描述

在控制檯輸入javap,如下所示:

這裏寫圖片描述

可以看到-s 可以輸出內部類型的簽名,所以就用在控制檯下輸入:javap -s hhh.exercise.test.Test

(或者在Test.class當前所在目錄打開控制檯,輸入javap -s Test 即可)
這裏寫圖片描述

3.解釋簽名

由上面的圖可以看到:
public void method1()
 descirption:()V  
表示method1方法簽名()V,
可以看出()裏面是參數類型,爲空;V表示返回類型,爲空

public void method2()
 descirption:(I)I 
表示method2方法簽名(I)I, 
可以看出(I)裏面是參數類型爲int;括號外的I表示返回類型爲int類型

public void method3()
 descirption:(LJava/lang/String;)LJava/lang/String; 
表示method3方法簽名(I)(LJava/lang/String;)LJava/lang/String; , 
可以看出(LJava/lang/String;)裏面是參數類型爲String;括號外的LJava/lang/String;表示返回類型爲String類型.

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