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