Java反射就是把Java的各種成分映射成相應(yīng)的Java類。
Class類的構(gòu)造方法是private,由JVM創(chuàng)建。
反射是java語言的一個特性,它允程序在運行時(注意不是編譯的時候)來進行自我檢查并且對內(nèi)部的成員進行操作。例如它允許一個java的類獲取他所有的成員變量和方法并且顯示出來。Java 的這一能力在實際應(yīng)用中也許用得不是很多,但是在其它的程序設(shè)計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++ 中就沒有辦法在程序中獲得函數(shù)定義相關(guān)的信息。(來自Sun)
JavaBean是reflection 的實際應(yīng)用之一,它能讓一些工具可視化的操作軟件組件。這些工具通過 reflection 動態(tài)的載入并取得 Java 組件(類) 的屬性。
反射是從1.2就有的,后面的三大框架都會用到反射機制,涉及到類"Class",無法直接new CLass(),其對象是內(nèi)存里的一份字節(jié)碼.
Class類的實例表示正在運行的 Java 應(yīng)用程序中的類和接口。枚舉是一種類,注釋是一種接口。每個數(shù)組屬于被映射為 Class對象的一個類,所有具有相同元素類型和維數(shù)的數(shù)組都共享該 Class 對象。
基本的 Java類型(boolean、byte、char、short、int、long、float 和 double)和關(guān)鍵字 void 也表示為 Class 對象。Class沒有公共構(gòu)造方法。
Class對象是在加載類時由 Java 虛擬機以及通過調(diào)用類加載器中的 defineClass 方法自動構(gòu)造的。
Class.forName()字節(jié)碼已經(jīng)加載到j(luò)ava虛擬機中,去得到字節(jié)碼;java虛擬機中還沒有生成字節(jié)碼 用類加載器進行加載,加載的字節(jié)碼緩沖到虛擬機中。