溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java學(xué)習(xí)教程:Java基礎(chǔ)——反射

發(fā)布時間:2020-08-09 10:36:26 來源:ITPUB博客 閱讀:140 作者:千鋒Python唐小強(qiáng) 欄目:web開發(fā)

什么是反射?

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)行了基本的闡述。

類的加載

說到反射就不得不說到類的加載

Java學(xué)習(xí)教程:Java基礎(chǔ)——反射

當(dāng)程序主動使用某個類時,如果該類還沒有被加載到內(nèi)存中,則系統(tǒng)會通過加載、連接、初始化這三個步驟對該類進(jìn)行初始化。有時會把這一整個流程統(tǒng)稱為類加載或類初始化。類加載指的是將類的class文件讀入內(nèi)存中,并為之創(chuàng)建一個 java.lang.Class對象,也就是說程序使用任何類的時候,都會為其創(chuàng)建一個class對象。

類加載器

Java學(xué)習(xí)教程:Java基礎(chǔ)——反射

類加載器負(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ā)者自己寫的類

向AI問一下細(xì)節(jié)

免責(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)容。

AI