2-1-2-05反射概述
阿新 • • 發佈:2020-07-19
反射:設計框架的靈魂
框架:半成品軟體,可以在框架的基礎上進行開發,可以簡化程式碼編寫
反射:將類的各個組成部分封裝為其他物件,這就是反射機制
好處:
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)在一次程式執行的過程中只會被載入一次,不論哪種方式獲取的物件都是同一個