Hello,今天給各位童鞋們分享的是Java反射,趕緊拿出小本子記下來吧1.反射介紹1.1 什麼是反射Java 反射機制是 Java 語言一個很重要的特性,它使得 Java 具有了「動態性」。在 Jav
2021-07-08 12:57:51
Hello,今天給各位童鞋們分享的是Java反射,趕緊拿出小本子記下來吧
1.反射介紹
1.1 什麼是反射
Java 反射機制是 Java 語言一個很重要的特性,它使得 Java 具有了「動態性」。在 Java程式運行時,對於任意的一個類,我們能不能知道這個類有哪些屬性和方法呢?對於任意的一個物件,我們又能不能呼叫它任意的方法?答案是肯定的!這種動態獲取類的資訊以及動態呼叫物件方法的功能就來自於 Java 語言的反射(Reflection)機制。
1.2 反射的作用
簡單來說兩個作用,RTTI(運行時類型識別)和 DC(動態創建)。我們知道反射機制允許程式在運行時取得任何一個已知名稱的 class 的內部資訊,包括其 modifiers(修飾符),fields(屬性),methods(方法)等,並可於運行時改變 fields 內容或呼叫methods。那麼我們便可以更靈活的編寫程式碼,程式碼可以在運行時裝配,無需在元件之間進行原始碼連結,降低程式碼的耦合度;還有動態代理的實現等等;但是需要注意的是反射使用不當會造成很高的資源消耗!
Java 反射機制是 Java 語言一個很重要的特性,它使得 Java 具有了「動態性」。
反射機制的優點:
更靈活。更開放。反射機制的缺點:
降低程式執行的效率。增加程式碼維護的困難。2. 創建物件過程
2.1 創建 Java 物件的三個階段
2.2 創建物件時記憶體結構
實際上,我們在載入任何一個類時都會在方法區中建立「這個類對應的 Class 物件」,由於「Class 物件」包含了這個類的整個結構資訊,所以我們可以通過這個「Class 物件」來操作這個類。
我們要使用一個類,首先要載入類;載入完類之後,在堆記憶體中,就產生了一個 Class 類型的物件(一個類只有一個 Class 物件),這個物件就包含了完整的類的結構資訊。我們可以通過這個物件知道類的結構。這個物件就像一面鏡子,透過這個鏡子可以看到類的結構,所以,我們形象的稱之為:反射。 因此,「Class 物件」是反射機制的核心。
3. 反射的具體實現
3.1 獲取 Class 物件的三種方式
通過 getClass()方法。
通過.class 靜態屬性。
通過 Class 類中的靜態方法 forName()
3.1.1 創建Users類
3.1.2 通過 getClass()方法獲取 Class 物件
3.1.3 通過.class 靜態屬性獲取 Class 物件
3.1.4 通過 forName()獲取 Class 物件
3.2 獲取類的構造方法
3.2.1 修改Users類
3.2.2 獲取構造方法
3.2.3 通過構造方法創建物件
3.3 獲取類的成員變數
3.3.1 獲取成員變數
3.3.2 操作成員變數
3.4 獲取類的方法
3.4.1 修改Users類
3.4.2 獲取方法並呼叫
4. setAccessible 方法
setAccessible()方法:
setAccessible 是啟用和禁用訪問安全檢查的開關。值為 true 則指示反射的物件在使用時應該取消 Java 語言訪問檢查。值為 false 則指示反射的物件應該實施 Java 語言訪問檢查;預設值為 false。
由於 JDK 的安全檢查耗時較多,所以通過 setAccessible(true)的方式關閉安全檢查就可以達到提升反射速度的目的。
好啦,今天的文章就到這裡了,希望能夠幫助到螢幕前迷茫的你們
相關文章
Hello,今天給各位童鞋們分享的是Java反射,趕緊拿出小本子記下來吧1.反射介紹1.1 什麼是反射Java 反射機制是 Java 語言一個很重要的特性,它使得 Java 具有了「動態性」。在 Jav
2021-07-08 12:57:51
就在滴滴出行成功登陸美股後的短短三天時間內,這家中國網約車平臺龍頭就經歷了從巔峰跌至低谷。6月30日登陸美股後,滴滴出行一度成為造富神話,令創始人及相關投資人身價大漲;然
2021-07-08 12:57:39
在魅族、酷派、諾基亞先後傳出接入鴻蒙系統,然後又以各種方式被打臉之後,終於又傳出一家巨頭要接入華為鴻蒙的訊息。格力總裁董明珠表態稱:「今後將引進鴻蒙作業系統。」當然這
2021-07-08 12:57:32
儘管美國的制裁削弱了其華為智慧手機部門,但中國領先的科技巨頭華為繼續表現出韌性。該公司今天宣佈推出一系列面向亞太市場的高階電子產品。產品範圍從顯示器、耳塞、膝上型
2021-07-08 12:57:27
vivo S系列一直都以出眾的外觀設計、輕薄的機身以及非常強大的自拍效能,深受廣大年輕群體的喜愛。近日,vivo官方也終於放出了官方代言人海報和相關視訊,表示S10系列將於7月15日
2021-07-08 12:57:22
雷鋒網訊息,7月8日,以計算設計驅動新葯研發的公司星亢原生物宣佈完成數千萬美元的A+輪融資,距上一輪的融資不到半年時間,累計融資額近一億美元。本輪融資由元生資本領投,LYFE Cap
2021-07-08 12:57:17