1.概念java
反射的概念 在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意一個方法;這種動態獲取信息以及動態調用對象方法的功能稱爲JAVA語言的反射機制。 spring
2.爲何要實現反射?框架
咱們知道,java程序中許多對象在運行時都會出現兩種類型:編譯時類型和運行時類型,編譯時類型由聲明該對象時使用的類型決定,運行時類型由實際賦給對象的類型決定,例如:Pet pet=new Dog(),此時對象pet的編譯時類型是pet,運行時類型是Dog,由於只有在程序運行的時候才能知道平pet引用的內容改成了Dog,因此稱之爲運行時類型。 除此以外,程序運行時還可能接收到外部傳入的一個對象,該對象的編譯類型是object,但程序又須要調用該對象運行時類型的方法。爲了解決這些問題,程序須要在運行時發現對象和類的真實信息。然而,若是編譯時根本沒法預知該對象的類可能屬於哪些類,程序只依靠運行時信息來發現該對象和類的真實信息,此時必須使用反射。spa
3.實現功能對象
反射的概念 在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意一個方法;這種動態獲取信息以及動態調用對象方法的功能稱爲JAVA語言的反射機制。 get
Java反射的三個動態性質: 編譯
一、運行時生成對象實例。object
二、運行期間調用方法。引用
三、運行時更改屬性。反射
Java反射能夠實現的功能:
一、在運行時判斷任意一個隨想所屬的類。
二、在運行時構造任意一個類的對象。
三、在運行時判斷任意一個類所具備的屬性和方法。
四、在運行時調用任意一個對象的方法。
包括在spring系列框架中實現的控制反轉和注入依賴