Java反射概念

反射的概述

  • JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為java語言的反射機制。
  • 要想解剖一個類,必須先要獲取到該類的字節(jié)碼文件對象。而解剖使用的就是Class類中的方法.所以先要獲取到每一個字節(jié)碼文件對應的Class類型的對象.
反射就是把java類中的各種成分映射成一個個的Java對象
  • 例如:一個類有:成員變量、方法、構造方法、包等等信息,利用反射技術可以對一個類進行解剖,把個個組成部分映射成一個個對象。
    (其實:一個類中這些成員方法、構造方法、在加入類中都有一個類來描述)
    *如圖是類的正常加載過程:反射的原理在與class對象。
    熟悉一下加載的時候:Class對象的由來是將class文件讀入內存,并為之創(chuàng)建一個Class對象。
image
  • Class 類的實例表示正在運行的 Java 應用程序中的類和接口。也就是jvm中有N多的實例每個類都有該Class對象。(包括基本數(shù)據(jù)類型)
    Class 沒有公共構造方法。Class 對象是在加載類時由 Java 虛擬機以及通過調用類加載器中的defineClass 方法自動構造的。也就是這不需要我們自己去處理創(chuàng)建,JVM已經(jīng)幫我們創(chuàng)建好了。
Java反射框架提供以下功能:
  • 在運行時判斷任意一個對象所屬的類
  • 在運行時構造任意一個類的對象
  • 在運行時判斷任意一個類所具有的成員變量和方法(通過反射設置可以調用 private)
  • 在運行時調用人一個對象的方法
反射的主要用途
  • 反射最重要的用途就是開發(fā)各種通用框架。
  • 很多框架(比如 Spring)都是配置化的(比如通過 XML文件配置 JavaBean,Action之類的),為了保證框架的通用性,他們可能根據(jù)配置文件加載不同的對象或類,調用不同的方法,這個時候就必須用到反射——運行時動態(tài)加載需要加載的對象。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 深入理解Class對象 RRTI的概念以及Class對象作用 認識Class對象之前,先來了解一個概念,RTTI(...
    架構師springboot閱讀 1,659評論 0 3
  • 反射的概述 JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都...
    皮皮力_996a閱讀 468評論 0 0
  • 整理來自互聯(lián)網(wǎng) 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工具...
    Ncompass閱讀 1,627評論 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)...
    慕容小偉閱讀 1,959評論 0 10
  • 匿名插槽 使用時,用 slot 屬性來將節(jié)點插入到不同的slot上。 實名插槽 使用時,用 slot 屬性來將節(jié)點...
    前端來入坑閱讀 1,442評論 0 6

友情鏈接更多精彩內容