Java基礎之反射

來源:互聯網
上載者:User

標籤:虛擬   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基礎之反射

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.