您好,登錄后才能下訂單哦!
什么是反射?
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。
例如:我們在開發的過程當中,經常會遇到某個類的某個成員變量、方法或是屬性是私有的或是只對系統應用開放,這時候就可以利用Java的反射機制通過反射來獲取所需的私有成員或是方法。
反射的常用類和函數
Java反射機制的實現要借助于4個類:Class,Constructor,Field,Method;其中class代表的是類對象,Constructor-類的構造器對象,Field-類的屬性對象,Method-類的方法對象,通過這四個對象我們可以粗略的看到一個類的各個組成部分。其中最核心的就是Class類,它是實現反射的基礎,它包含的方法我們在第一部分已經進行了基本的闡述。
類的加載
說到反射就不得不說到類的加載
當程序主動使用某個類時,如果該類還沒有被加載到內存中,則系統會通過加載、連接、初始化這三個步驟對該類進行初始化。有時會把這一整個流程統稱為類加載或類初始化。類加載指的是將類的class文件讀入內存中,并為之創建一個 java.lang.Class對象,也就是說程序使用任何類的時候,都會為其創建一個class對象。
類加載器
類加載器負責將.class文件加載到內存中,并為之生成對應的Class對象。類加載器負責加載所有的類,系統為所有加載到內存中的類生成一個java.lang.Class 的實例。
類加載器的組成:Bootstrap ClassLoader 根類加載器 : 也被稱為引導類加載器,負責Java核心類的加載,比如System類,在JDK中JRE的lib目錄下rt.jar文件中的類Extension ClassLoader 擴展類加載器 : 負責JRE的擴展目錄中jar包的加載,在JDK中JRE的lib目錄下ext目錄System ClassLoader 系統類加載器 : 負責在JVM啟動時加載來自java命令的class文件,以及classpath環境變量所指定的jar包和類路徑,主要是我們開發者自己寫的類
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。