就是得到class物件後,反向獲取物件的各種資訊(公有的,私有的等等)。
帶有declared修飾的方法可以反射到私有的方法,沒有declared修飾的只能用來反射公有的方法。其他的annotation
、field
、constructor
也是如此。
執行過程中操作各種類的物件。
可以解耦
,提高可拓展性
。
效能問題。
使用反射機制基本上是一種解釋操作,我們可以告訴jvm,我們希望做什麼並且它滿足我們得要求。用於欄位和方法接入時反射要遠滿於直接**。
效能問題的程度取決於程式中是如何使用反射
的。如果它作為程式執行中相對很少涉及的部分,緩慢的效能將不會是乙個問題。
使用反射會模糊程式內部邏輯。
程式人員希望在源**中看到程式的邏輯,反射等繞過了源**的技術會帶來維護問題。反射**比相應的直接**更複雜
。解決這些問題的最佳方案是保守地使用反射
——僅在它可以真正增加靈活性的地方
——記錄其在目標類中的使用
。
內部暴露
由於反射允許**執行一些在正常情況下不被允許的操作
(比如訪問私有的屬性和方法),所以使用反射可能會導致意料之外的***
--**有功能上的錯誤,降低可移植性。反射**破壞了抽象性
,因此當平台發生改變的時候,**的行為就有可能也隨著變化
。
反射(複習總結)
反射 將類的各個組成部分封裝為其他物件,這就是反射機制 好處 1.可以在程式執行過程中,操作這些物件。2.可以解耦,提高程式的可擴充套件性。獲取class物件的方式 1.class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件 多用於配置檔案,將類名定義在配置檔案中。讀取檔...
JAVA的反射總結
1.class.forname總結 1.1 原始型別採用class clazz class.forname i getcomponenttype 1.2 類陣列情況採用 lfullclassname 1.3 類情況採用fullclassname 2.class的關鍵函式總結 2.1.1 class....
反射的用法總結
一 反射物件的例項變數 繫結方法 import time class perosn def init self,name,birth self.name name self.birth birth property def age self return time.localtime tm year...