反射的簡單使用

      Java的反射(reflection)機制是指在程序的運行狀態中,可以構造任意一個類的對象,可以瞭解任意一個對象所屬的類,可以瞭解任意一個類的成員變量和方法,可以調用任意一個對象的屬性和方法。這種動態獲取程序信息以及動態調用對象的功能稱爲Java語言的反射機制。反射被視爲動態語言的關鍵。

 當然,平時我們在項目中使用的機率比較小,一般是用在框架上的,從而使擴展性更強。下面我們就簡單寫一個例子,來使用下。

public class TestMode {

    private int age;

    String name;
    
    int length;

    public TestMode(){
    }

    public TestMode(int age, String name, int length) {
        this.age = age;
        this.name = name;
        this.length = length;
    }

    public int getLength() {
        return length;
    }

    public void setLength(int length) {
        this.length = length;
    }



    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "TestMode{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", length=" + length +
                '}';
    }
}

新建了一個java類,並且給這個類負值,然後通過反射機制獲取。

        TestMode testMode = new TestMode(30, "明", 170);
        Class cla = testMode.getClass();
        Field[] fields=cla.getDeclaredFields();
        for (Field field:fields ) {
          Object vl=field.getName();

            try {
                /**
                 * 設置field 訪問私有權限
                 * 對所有屬性設置訪問權限  當類中的成員變量爲private時 必須設置此項
                 */
                field.setAccessible(true);
               Object obj=field.get(testMode);

               System.out.println(field.getName());
               System.out.println("value:"+obj);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

這樣我們就可以通過反射來獲取類中所有的方法 及函數值。


age
value:30
name
value:明
length
value:170

如果想更多瞭解可以參考這裏:https://www.jianshu.com/p/9be58ee20dee,這篇寫的比較全

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