標籤:虛擬 json解析 bsp 建立 動態 XML java反射 類資訊 它的
Java反射是指運行時擷取類資訊,進而在運行時動態構造對象、調用對象方法及修改對象屬性的機制。百度百科的定義:“JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態擷取資訊以及動態調用對象方法的功能稱為java語言的反射機制。
一、反射的用途
Java的反射機制可以做3件事:運行時建立對象、運行時調用方法、運行時讀寫屬性。進而實現以下功能:
調用一些私人方法,實現黑科技。比如雙卡簡訊發送、設定狀態列顏色、自動掛電話等。
實現序列化與還原序列化,比如PO的ORM,Json解析等。
實現跨平台相容,比如JDK中的SocketImpl的實現。
通過xml或註解,實現依賴注入(DI),註解處理,動態代理,單元測試等功能。比如Retrofit、Spring或者Dagger。
二、Java反射的優缺點
優點:
(1)能夠運行時動態擷取類的執行個體,大大提高系統的靈活性和擴充性。
(2)與Java動態編譯相結合,可以實現無比強大的功能
缺點:
(1)使用反射的效能較低
(2)使用反射相對來說不安全
(3)破壞了類的封裝性,可以通過反射擷取這個類的私人方法和屬性
三、Java反射的用法
主要反射API,用來產生在當前JAVA虛擬機器中的類、介面或者對象的資訊。
●Class類:反射的核心類,可以擷取類的屬性,方法等內容資訊。
●Field類:Java.lang.reflect.表示類的屬性,可以擷取和設定類的中屬性值。
●Method類:Java.lang.reflect。表示類的方法,它可以用來擷取類中方法的資訊或者執行方法
Construcor類:Java.lang.reflect。表示類的構造方法。
使用步驟:
●獲得想操作類的Java.lang.Class對象
●調用Class的方法
●使用反射API來操作這些資訊
Java基礎之反射