1. 程式人生 > 實用技巧 >2-1-2-05反射概述

2-1-2-05反射概述

反射:設計框架的靈魂

  框架:半成品軟體,可以在框架的基礎上進行開發,可以簡化程式碼編寫

  反射:將類的各個組成部分封裝為其他物件,這就是反射機制

  好處:

    1.可以在程式執行的過程中操作這些物件

    2.可以解耦,提高程式的可擴充套件性

String str = new String();//例項化物件
        //經過反射機制,將String物件抽取出來封裝到Class類物件中的Method[]中,當呼叫方法時就顯示Method[]中的所有方法,再選擇呼叫哪個方法
        str.length();

    }

獲取class物件的方式:

  1.Class.forName("全類名"):

將位元組碼檔案載入進記憶體,返回Class檔案物件(在Source原始碼階段的呼叫)

  2.類名.class:通過類名的屬性class獲取(在Class類物件階段的呼叫)

  3.物件名.getClass():getClass()方法是Object類中的方法(在Runtime執行階段的呼叫)

//1.Class.forName("全類名");
        Class aClass = Class.forName("reflect.ReflectEntity2");
        System.out.println(aClass);

        //2.類名.Class;
        Class reflectEntity2Class = ReflectEntity2.class
; System.out.println(reflectEntity2Class); //3.物件.getClass(); ReflectEntity2 reflectEntity2 = new ReflectEntity2(); Class aClass1 = reflectEntity2.getClass(); System.out.println(aClass1); //比較三者地址值是否相同 System.out.println(aClass==reflectEntity2Class);//
true System.out.println(aClass==aClass1);//true System.out.println(reflectEntity2Class==aClass1);//true

輸出結果:

結論:

  同一個位元組碼檔案(*.class)在一次程式執行的過程中只會被載入一次,不論哪種方式獲取的物件都是同一個