日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java反射技術(shù)原理與用法實(shí)例分析

瀏覽:198日期:2022-09-02 18:14:57

本文實(shí)例講述了Java反射技術(shù)原理與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容: 產(chǎn)生反射技術(shù)的需求 反射技術(shù)的使用 一個(gè)小示例

首發(fā)日期:2018-05-10

產(chǎn)生反射技術(shù)的需求: 項(xiàng)目完成以后,發(fā)現(xiàn)需要增加功能,并且希望增加功能并不需要停止項(xiàng)目運(yùn)行。 在希望不關(guān)停項(xiàng)目運(yùn)行的情況下,于是考慮到將功能都放到一個(gè)單獨(dú)的項(xiàng)目之外的模塊中,每一個(gè)功能實(shí)現(xiàn)都從這個(gè)模塊中獲取【實(shí)際上這個(gè)考慮應(yīng)該是項(xiàng)目開始前就考慮,這個(gè)例子可能不是很好】。于是就有了反射的產(chǎn)生。(這種思想有點(diǎn)類似工廠模式,如果學(xué)過設(shè)計(jì)模式的話就明白為什么要做的”開放“)一個(gè)幫助理解例子:

一個(gè)網(wǎng)站有計(jì)算器功能,剛開始他們只有加減乘除的計(jì)算,后來他們決定增加上求乘方、求根號(hào)的計(jì)算,他們通過“關(guān)停網(wǎng)站后修改源代碼“來增加上他們需要的功能。第二次,他們加上xx功能,他們還是關(guān)停網(wǎng)站加功能。。。。后來他們發(fā)現(xiàn)應(yīng)該把這個(gè)”功能模塊“獨(dú)立出來,任何功能實(shí)現(xiàn)都通過讀取這個(gè)文件來實(shí)現(xiàn),比如想要實(shí)現(xiàn)乘方功能就需要查看這個(gè)模塊中是否定義了乘方功能。另外,將它獨(dú)立出來后,它一個(gè)模塊并不影響整個(gè)板塊的功能。

【上面的例子中,其他板塊如果想要知道獨(dú)立的模塊的內(nèi)容(屬性、方法),那么就要利用到反射技術(shù),反射技術(shù)可以使程序在運(yùn)行時(shí)解析外部對(duì)象的信息。】

PS:

上面的例子有點(diǎn)像某系統(tǒng)從數(shù)據(jù)庫(kù)中讀取資料,把資料固定到代碼中顯然是一個(gè)很不明智的行為,把數(shù)據(jù)存到數(shù)據(jù)庫(kù)中,再利用SQL語(yǔ)句(類比反射技術(shù))從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)就降低了代碼之間的耦合。 如果你希望將這個(gè)模塊有一個(gè)名詞解釋的話,可以把它稱為”配置文件“,有什么功能都可以讀取配置文件來獲取。下面就是講怎么從外部的”配置文件“中讀取具有什么屬性和功能了。

如果你已經(jīng)了解了 為什么需要反射,那么你可以繼續(xù)向下了,如果不了解,那么你可能需要了解更多再深入。

反射的使用: 反射技術(shù)是一種動(dòng)態(tài)語(yǔ)言的技術(shù),它可以動(dòng)態(tài)的獲取類以及類中的成員,并可以調(diào)用該類成員。獲取外部字節(jié)碼文件中的類: 對(duì)于內(nèi)部的類,獲取該類的對(duì)象時(shí)我們可以使用newJava反射技術(shù)原理與用法實(shí)例分析 但是如果字節(jié)碼文件中獲取類的話,需要Class類,如果通過Class類獲取了一個(gè)字節(jié)碼中的類,那么我們?cè)倏梢灾苯觧ew這個(gè)來獲取一個(gè)對(duì)象。 對(duì)于代碼中的類,可以使用 類對(duì)象.getClass()來獲取一個(gè)字節(jié)碼文件對(duì)象。Java反射技術(shù)原理與用法實(shí)例分析 對(duì)于代碼中的類,也可以使用 類.class 來獲取一個(gè)字節(jié)碼文件對(duì)象。Java反射技術(shù)原理與用法實(shí)例分析 對(duì)于外部代碼中的類,可以使用Class.forName('類字節(jié)碼文件路徑')來獲取一個(gè)字節(jié)碼文件對(duì)象【這個(gè)類字節(jié)碼文件是classpath中能夠識(shí)別的路徑,eclipse中會(huì)自動(dòng)加上一部分classpath】【eclipse中,在每一個(gè)project的目錄下都有一個(gè)classpath來標(biāo)明字節(jié)碼文件和源代碼文件的位置】【在eclipse中可以方便地使用包名.類名來獲取字節(jié)碼文件】Java反射技術(shù)原理與用法實(shí)例分析獲取外部類的對(duì)象(獲取構(gòu)造方法): 獲取字節(jié)碼文件中的類對(duì)象后,可以使用newInstance()來生成一個(gè)對(duì)象。Java反射技術(shù)原理與用法實(shí)例分析 直接使用Class對(duì)象.newInstance()生成的對(duì)象默認(rèn)是調(diào)用對(duì)應(yīng)類的空參構(gòu)造方法實(shí)例化生成的對(duì)象。 但沒有空參數(shù)的構(gòu)造方法時(shí): 1.首先需要獲取構(gòu)造方法來生成指定的對(duì)象,可以使用getConstructors()來獲取所有構(gòu)造函數(shù),getConstructor(參數(shù)類型列表)來獲取符合參數(shù)列表的構(gòu)造方法;【1.這里對(duì)于getConstructor注意參數(shù)類型列表不是數(shù)據(jù)類型+變量名,而是一個(gè)個(gè)Class:數(shù)據(jù)類型.class】Java反射技術(shù)原理與用法實(shí)例分析【2.Constructor是一個(gè)存放構(gòu)造器的類。】【3.獲取的構(gòu)造方法應(yīng)該是public的】 2.然后再利用構(gòu)造器對(duì)象.newInstance(參數(shù)列表)來實(shí)例化對(duì)象。Java反射技術(shù)原理與用法實(shí)例分析 如果是非public的構(gòu)造方法,可以使用getDeclaredConstructor(參數(shù)類型列表)來獲取構(gòu)造方法。同樣的,getDeclaredConstructors()是獲取所有不論public還是非public的構(gòu)造方法。 獲取外部對(duì)象的屬性: 首先通過Class對(duì)象獲取變量域field:Java反射技術(shù)原理與用法實(shí)例分析【Field類用來存儲(chǔ)變量域】 getField(變量名):獲取指定變量名的public的成員變量 getFields():獲取所有public的成員變量 getDeclaredField(變量名):獲取不論public還是非public的指定變量名的成員變量 getDeclaredFields():獲取不論public還是非public的所有成員變量 然后使用Field對(duì)象來操作: 賦值:Field對(duì)象.set(對(duì)象名,變量值)Java反射技術(shù)原理與用法實(shí)例分析 獲取值:Field對(duì)象.get(對(duì)象名)Java反射技術(shù)原理與用法實(shí)例分析 獲取外部對(duì)象的方法: 首先通過Class對(duì)象獲取方法域method:Java反射技術(shù)原理與用法實(shí)例分析【Field類用來存儲(chǔ)方法域】 getMethod(方法名, 參數(shù)類型列表):獲取public的指定名的方法 getMethods():獲取public的所有方法

getDeclaredMethod(方法名, 參數(shù)類型列表):獲取不論public還是非public的指定名的方法【用來獲取私有的方法】

getDeclaredMethods():獲取不論public還是非public的方法

然后使用Method對(duì)象操作:

非靜態(tài)方法調(diào)用:Method對(duì)象.invoke(對(duì)象名,對(duì)象名…)Java反射技術(shù)原理與用法實(shí)例分析

靜態(tài)方法調(diào)用:Method對(duì)象.invoke(null)Java反射技術(shù)原理與用法實(shí)例分析

補(bǔ)充: 如果想使用普通方法就能訪問私有的變量或?qū)傩裕梢允褂?field.setAccesccible(true)一個(gè)小示例:1.讀取”軟件列表“:

Java反射技術(shù)原理與用法實(shí)例分析

2.通過讀取功能列表來獲知類的字節(jié)碼的路徑

Java反射技術(shù)原理與用法實(shí)例分析

3.開發(fā)'軟件”:

Java反射技術(shù)原理與用法實(shí)例分析

3.給軟件列表加上內(nèi)容:Java反射技術(shù)原理與用法實(shí)例分析4.運(yùn)行

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99热精品在线观看| 日韩动漫一区| 亚洲高清av| 欧美日韩一区二区综合 | 日精品一区二区三区| 久久精品福利| 久久gogo国模啪啪裸体| 高清一区二区| 精品视频一区二区三区在线观看 | 亚洲国内欧美| 亚洲一级二级| 综合激情五月婷婷| 亚洲激情av| 日韩视频不卡| 免费精品国产的网站免费观看| 99精品在线观看| 亚洲三级在线| 国产一卡不卡| av最新在线| 国产精品av一区二区| 另类av一区二区| 国产精品久久| 美腿丝袜亚洲三区| 91精品推荐| 日韩av中文字幕一区| 麻豆精品国产91久久久久久| 97精品中文字幕| 色一区二区三区四区| av免费不卡国产观看| 中文在线日韩| 久久婷婷国产| 国产精品av一区二区| 四虎影视精品| 国产欧美一区二区三区精品观看| 久久精品播放| 国产精品v亚洲精品v日韩精品| 99久久亚洲精品蜜臀| 激情五月综合| 精品久久久久中文字幕小说| 日韩av中文字幕一区二区三区| 韩国女主播一区二区三区| 一区视频在线| 精品中文在线| 婷婷激情综合| 久久午夜影院| 在线 亚洲欧美在线综合一区| 精品美女久久| 国产精品成人自拍| 久久久久久免费视频| 国产精品videosex极品| 欧美影院视频| 亚洲精品护士| 麻豆亚洲精品| 国产成人精品免费视| 日韩高清一区二区| 日韩高清成人在线| jiujiure精品视频播放| 日韩精品不卡一区二区| 国产精品videosex极品| 久久精品72免费观看| 日韩黄色av| 四虎影视精品| 欧美日韩国产一区二区三区不卡 | 亚洲国产不卡| 欧美成人精品| 亚洲精品综合| 日韩中文欧美在线| 丝袜脚交一区二区| 免费成人在线影院| 国产亚洲永久域名| 羞羞答答国产精品www一本 | 香蕉精品999视频一区二区| 日韩中文字幕1| 免费在线欧美视频| 日韩精品久久久久久| 精品视频黄色| 国产成人精品亚洲日本在线观看| 97se综合| 久久精品1区| 亚洲一区二区三区四区五区午夜| 性欧美精品高清| 国产午夜精品一区在线观看| 色综合视频一区二区三区日韩 | 国产视频久久| 亚洲免费在线| 免费视频久久| 日韩精品久久理论片| 免费一级欧美片在线观看网站 | 人人精品久久| 91亚洲自偷观看高清| 日韩成人a**站| 亚洲激情久久| 日韩综合在线| 99国产精品久久久久久久| 性色一区二区| 国产精品成人国产| 婷婷丁香综合| 你懂的国产精品| 国产福利资源一区| 精品日韩毛片| 韩日一区二区| 久久亚洲风情| 神马午夜在线视频| 国产高清亚洲| 天堂av在线一区| 波多野结衣久久精品| 亚洲久草在线| 青青青免费在线视频| 日本国产亚洲| 视频精品一区二区| 国产 日韩 欧美 综合 一区| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品99久久免费| 久久成人亚洲| 国产亚洲欧洲| 国产精品久久久久久久免费观看| 日韩**一区毛片| 亚洲一区二区三区四区五区午夜| 97精品久久| 日韩在线网址| 日本成人在线一区| 国产一区清纯| 久久伦理在线| 91tv亚洲精品香蕉国产一区| 国产亚洲福利| 国产亚洲午夜| 日韩精品一区二区三区中文| 日韩一级网站| 亚洲精品一二三区区别| 黄色av日韩| 欧美专区在线| 视频一区国产视频| 丝袜亚洲另类欧美| 日韩精品一区第一页| 欧美在线资源| 99在线精品免费视频九九视| 亚洲激情不卡| 亚洲精品国产日韩| 亚洲香蕉久久| 日韩国产欧美在线播放| 日本不卡在线视频| 日本亚州欧洲精品不卡| 国产午夜精品一区在线观看| 久草精品视频| 97人人精品| 99国产精品久久久久久久 | 午夜国产精品视频| 视频在线观看一区| 综合国产精品| 免费亚洲婷婷| 一区在线视频观看| 亚洲尤物在线| 亚洲精品日本| 在线天堂中文资源最新版| 高清日韩中文字幕| 视频一区中文| 国产精品久久久一区二区| 激情综合五月| 最新日韩av| 免费亚洲婷婷| 桃色一区二区| 91精品国产自产在线丝袜啪| 中文字幕人成乱码在线观看 | 免费在线欧美视频| 精品亚洲a∨一区二区三区18| 视频福利一区| 开心激情综合| 日韩精品免费视频一区二区三区 | 久久精品高清| 国产精品调教| jiujiure精品视频播放| 国产欧美在线| 亚洲精选久久| 亚洲免费激情| 欧美.日韩.国产.一区.二区| 蜜桃久久精品一区二区| 国产亚洲一区二区手机在线观看 | 中文在线а√在线8| 亚洲国产综合在线看不卡| 国产精品久久亚洲不卡| 亚洲一区二区三区四区电影 | 日韩视频久久| 日韩精品不卡一区二区| 色爱综合网欧美| 欧美激情福利| 国产精品最新| 日韩中文字幕无砖| 狠狠色综合网| 婷婷丁香综合| 久久九九99| 久久精品福利| 国产精品福利在线观看播放| 精品一区视频| 国产精品一页| 麻豆一区二区在线| 国产a亚洲精品| 国产精品videossex久久发布| 91成人小视频| 国产免费久久| 久久精品天堂|