大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 JAVA反射機(jī)制詳解

JAVA反射機(jī)制詳解

更新時(shí)間:2021-04-23 10:26:50 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1072次

1.什么是反射機(jī)制

簡(jiǎn)單的來(lái)說(shuō),反射機(jī)制指的是程序在運(yùn)行時(shí)能夠獲取自身的信息。在java中,只要給定類的名字,那么就可以通過(guò)反射機(jī)制來(lái)獲得類的所有信息。

2.哪里用到反射機(jī)制

有些時(shí)候,我們用過(guò)一些知識(shí),但是并不知道它的專業(yè)術(shù)語(yǔ)是什么,在剛剛學(xué)jdbc時(shí)用過(guò)一行代碼,Class.forName("com.mysql.jdbc.Driver.class").newInstance();但是那時(shí)候只知道那行代碼是生成驅(qū)動(dòng)對(duì)象實(shí)例,并不知道它的具體含義。聽(tīng)了反射機(jī)制這節(jié)課后,才知道,原來(lái)這就是反射,現(xiàn)在很多開(kāi)框架都用到反射機(jī)制,hibernate、struts都是用反射機(jī)制實(shí)現(xiàn)的。

3.反射機(jī)制的優(yōu)點(diǎn)與缺點(diǎn)

為什么要用反射機(jī)制?直接java創(chuàng)建對(duì)象不就可以了嗎,這就涉及到了動(dòng)態(tài)與靜態(tài)的概念,靜態(tài)編譯:在編譯時(shí)確定類型,綁定對(duì)象,即通過(guò)。

動(dòng)態(tài)編譯:運(yùn)行時(shí)確定類型,綁定對(duì)象。動(dòng)態(tài)編譯最大限度發(fā)揮了java的靈活性,體現(xiàn)了多態(tài)的應(yīng)用,有以降低類之間的藕合性。

一句話,反射機(jī)制的優(yōu)點(diǎn)就是可以實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建對(duì)象和編譯,體現(xiàn)出很大的靈活性,特別是在J2EE的開(kāi)發(fā)中它的靈活性就表現(xiàn)的十分明顯。比如,一個(gè)大型的軟件,不可能一次就把把它設(shè)計(jì)的很完美,當(dāng)這個(gè)程序編譯后,發(fā)布了,當(dāng)發(fā)現(xiàn)需要更新某些功能時(shí),我們不可能要用戶把以前的卸載,再重新安裝新的版本,假如這樣的話,這個(gè)軟件肯定是沒(méi)有多少人用的。

采用靜態(tài)的話,需要把整個(gè)程序重新編譯一次才可以實(shí)現(xiàn)功能的更新,而采用反射機(jī)制的話,它就可以不用卸載,只需要在運(yùn)行時(shí)才動(dòng)態(tài)的創(chuàng)建和編譯,就可以實(shí)現(xiàn)該功能。

它的缺點(diǎn)是對(duì)性能有影響。使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什么并且它滿足我們的要求。這類操作總是慢于只直接執(zhí)行相同的操作。

4.利用反射機(jī)制能獲得什么信息

一句話,類中有什么信息,它就可以獲得什么信息,不過(guò)前提是得知道類的名字,要不就沒(méi)有后文了,首先得根據(jù)傳入的類的全名來(lái)創(chuàng)建Class對(duì)象。

Class c=Class.forName("className");注明:className必須為全名,也就是得包含包名,比如,cn.netjava.pojo.UserInfo;

Object obj=c.newInstance();//創(chuàng)建對(duì)象的實(shí)例

OK,有了對(duì)象就什么都好辦了,想要什么信息就有什么信息了。

獲得構(gòu)造函數(shù)的方法

Constructor getConstructor(Class[] params)//根據(jù)指定參數(shù)獲得public構(gòu)造器

Constructor[] getConstructors()//獲得public的所有構(gòu)造器

Constructor getDeclaredConstructor(Class[] params)//根據(jù)指定參數(shù)獲得public和非public的構(gòu)造器

Constructor[] getDeclaredConstructors()//獲得public的所有構(gòu)造器

獲得類方法的方法

Method getMethod(String name, Class[] params),根據(jù)方法名,參數(shù)類型獲得方法

Method[] getMethods()//獲得所有的public方法

Method getDeclaredMethod(String name, Class[] params)//根據(jù)方法名和參數(shù)類型,獲得public和非public的方法

Method[] getDeclaredMethods()//獲得所以的public和非public方法

獲得類中屬性的方法

Field getField(String name)//根據(jù)變量名得到相應(yīng)的public變量

Field[] getFields()//獲得類中所以public的方法

Field getDeclaredField(String name)//根據(jù)方法名獲得public和非public變量

Field[] getDeclaredFields()//獲得類中所有的public和非public方法

常用的就這些,知道這些,其他的都好辦……

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的“JAVA反射機(jī)制詳解”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久99久久精品久久久久久 | 日本成本人在线观看免费视频 | 日本阿v精品视频在线观看 日本爱爱免费视频 | 亚洲一区二区三区免费看 | 国产一精品一aⅴ一免费 | 91精品国产自产91精品 | 豆国产93在线 | 亚洲 | 精品久久久久久亚洲精品 | 欧美日韩在线视频播放 | 狠狠色丁香婷婷综合精品视频 | 一区不卡在线观看 | 国产欧美视频综合二区 | 久久综合久久精品 | 四虎影院免费观看 | 91久久线看在观草草青青 | 操一操日一日 | 国产精品一区伦免视频播放 | 99re这里有精品 | 天天舔天天插 | 色香蕉网站| 公主恋人在线观看 | 国产大尺度视频 | 99久久亚洲综合精品网站 | 5252色欧美在线男人的天堂 | www性| 欧美大屁股精品毛片视频 | 不卡高清av手机在线观看 | 毛片免费观看久久欧美 | 国内精品久久久久 | 欧美色婷婷 | 欧美日本另类xxx乱大交 | 久久精品啪啪嗷嗷叫 | 青青热在线精品视频免费 | 日韩精品福利视频一区二区三区 | 精品一区二区三区免费视频 | 国产香蕉98碰碰久久人人 | 国产在线精品一区二区 | 奇米七七七 | 超级碰碰青草久热国产 | 亚洲欧美日韩国产精品 | 99在线观看免费视频 |