序言

      在學(xué)習(xí)java基礎(chǔ)時(shí),由于學(xué)的不扎實(shí),講的實(shí)用性不強(qiáng),就覺(jué)得沒(méi)用,很多重要的知識(shí)就那樣一筆帶過(guò)了,像這個(gè)馬上要講的反射機(jī)制一樣,當(dāng)時(shí)學(xué)的時(shí)候就忽略了,到后來(lái)學(xué)習(xí)的知識(shí)中,很多東西動(dòng)不動(dòng)就用反射,所以回過(guò)頭來(lái)把這個(gè)給重新補(bǔ)一下,自己欠下的債,遲早是要還的。

                                      ---WH

一、什么是反射?

    在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠獲取到這個(gè)類(lèi)的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性(包括私有的方法和屬性),這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能就稱(chēng)為java語(yǔ)言的反射機(jī)制。通俗點(diǎn)講,通過(guò)反射,該類(lèi)對(duì)我們來(lái)說(shuō)是完全透明的,想要獲取任何東西都可以。

    想要使用反射機(jī)制,就必須要先獲取到該類(lèi)的字節(jié)碼文件對(duì)象(.class),通過(guò)字節(jié)碼文件對(duì)象,就能夠通過(guò)該類(lèi)中的方法獲取到我們想要的所有信息(方法,屬性,類(lèi)名,父類(lèi)名,實(shí)現(xiàn)的所有接口等等),每一個(gè)類(lèi)對(duì)應(yīng)著一個(gè)字節(jié)碼文件也就對(duì)應(yīng)著一個(gè)Class類(lèi)型的對(duì)象,也就是字節(jié)碼文件對(duì)象。

    獲取字節(jié)碼文件對(duì)象的三種方式。

       1、Class clazz1 = Class.forName("全限定類(lèi)名");  //通過(guò)Class類(lèi)中的靜態(tài)方法forName,直接獲取到一個(gè)類(lèi)的字節(jié)碼文件對(duì)象,此時(shí)該類(lèi)還是

網(wǎng)友評(píng)論