定義:JAVA反射機制是在運行狀態中,對於任意一個類,都可以知道這個類的全部屬性和方法;對於任意一個對象,都可以調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱爲Java語言的反射機制。Java的反射機制容許編程人員在對類未知的狀況下,獲取類相關信息的方式變得更加多樣靈活,調用類中相應方法,是Java增長其靈活性與動態性的一種機制。java
總結:反射就是把Java類中的各類成分映射成一個個的Java對象android
例如:一個類有:成員變量、方法、構造方法、包等信息,利用反射技術能夠對一個類進行解剖,把各個組成部分映射成一個個對象。(其實:一個類中這些成員方法、構造方法、在加入類中都有一個類來描述)編程
反射機制的相關類安全
與Java反射相關的類以下:性能
Class類優化
Class表明類的實體,在運行的Java應用程序中表示類和接口。在這個類中提供了不少有用的方法,這裏對他們簡單的分類介紹。google
得到類相關的方法對象
得到類中屬性相關的方法
得到類中註解相關的方法blog
得到類中方法相關的方法接口
類中其餘重要的方法
Field類
Field表明類的成員變量(成員變量也稱爲類的屬性)。
Method類
Method表明類的方法。
Constructor類
Constructor表明類的構造方法。
特色
儘管反射機制帶來了極大的靈活性及方便性,但反射也有缺點。反射機制的功能很是強大,但不能濫用。在能不使用反射完成時,儘可能不要使用,緣由有如下幾點:
一、性能問題。
Java反射機制中包含了一些動態類型,因此Java虛擬機不可以對這些動態代碼進行優化。所以,反射操做的效率要比正常操做效率低不少。咱們應該避免在對性能要求很高的程序或常常被執行的代碼中使用反射。並且,如何使用反射決定 了性能的高低。若是它做爲程序中較少運行的部分,性能將不會成爲一個問題。
二、安全限制。
使用反射一般須要程序的運行沒有安全方面的限制。若是一個程序對安全性提出要求,則最好不要使用反射。
三、程序健壯性。
反射容許代碼執行一些一般不被容許的操做,因此使用反射有可能會致使意想不到的後果。反射代碼破壞了Java程序結構的抽象性,因此當程序運行的平臺發生變化的時候,因爲抽象的邏輯結構不能被識別,代碼產生的效果與以前會產生 差別。