反射反射,程序員的快樂。
搞不懂反射,怎麼能快樂?
什麼是反射?
Java的反射機制是在運行狀態中,對於任意一個類,都能知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能成爲Java語言的反射機制。
反射機制提供的主要功能
-
在運行時判斷任意一個對象所屬的類;
-
在運行時構造任意一個類的對象;
-
在運行時判斷任意一個類所具有的成員變量和方法;
-
在運行時調用任意一個對象的方法;
意義
-
反射機制極大的提高了程序的靈活性和擴展性,降低模塊的耦合性,提高自身的適應能力
-
通過反射機制可以讓程序創建和控制任何類的對象,無需提前硬編碼目標類
-
使用反射機制能夠在運行時構造一個類的對象、判斷一個類所具有的成員變量和方法、調用一個對象的方法
-
反射是構建框架技術的基礎所在,使用反射可以避免將代碼寫死在框架。
特點
1、性能問題
Java反射機制中運用了一些動態類型,所以JVM不能夠對這些動態代碼進行優化。因此,反射操作的效率要比正常操作效率低很多。我們應該避免在對性能要求很高的程序或者經常被執行的代碼中使用反射。
2、安全限制
使用反射通常要求程序的運行沒有安全方面的要求,如果一個程序對安全性提出要求,最好不要使用反射
3、程序健壯性
反射代碼破壞了Java程序結構的抽象性,所以當程序運行的平臺發生變化的時候,由於抽象的邏輯結構不能被識別,代碼產生的效果與之前會產生差異