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

您的位置:首頁技術文章
文章詳情頁

Java反射技術原理與用法實例分析

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

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

本文內容: 產生反射技術的需求 反射技術的使用 一個小示例

首發日期:2018-05-10

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

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

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

PS:

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

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

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

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

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

然后使用Method對象操作:

非靜態方法調用:Method對象.invoke(對象名,對象名…)Java反射技術原理與用法實例分析

靜態方法調用:Method對象.invoke(null)Java反射技術原理與用法實例分析

補充: 如果想使用普通方法就能訪問私有的變量或屬性,可以使用:field.setAccesccible(true)一個小示例:1.讀取”軟件列表“:

Java反射技術原理與用法實例分析

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

Java反射技術原理與用法實例分析

3.開發'軟件”:

Java反射技術原理與用法實例分析

3.給軟件列表加上內容:Java反射技術原理與用法實例分析4.運行

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久九九精品| 一区二区三区网站| 丝袜诱惑制服诱惑色一区在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 精品国产一区二区三区2021| 久久久精品五月天| 亚洲精选91| 99成人在线| 韩国久久久久久| 激情中国色综合| 国产精品久久777777毛茸茸| 亚洲深夜影院| 99久久亚洲精品蜜臀| 日本欧美韩国一区三区| 999国产精品视频| 精品女同一区二区三区在线观看| 蜜桃视频第一区免费观看| 激情丁香综合| 亚洲va在线| 久久久一二三| 香蕉成人av| 蜜臀国产一区| 欧美日韩国产传媒| 视频在线在亚洲| 日韩欧美另类一区二区| 日韩毛片视频| 成人看片网站| 日本欧美在线看| 99在线精品免费视频九九视| 狠狠干综合网| 99国产精品视频免费观看一公开| 欧美aa在线视频| 精品视频在线你懂得| 国产在线观看www| 免费av一区| 亚州精品视频| 午夜精品影视国产一区在线麻豆| 日韩在线卡一卡二| 日韩av一级片| 午夜欧美视频| 国产精品qvod| 日本一二区不卡| 秋霞影视一区二区三区| 中文字幕av一区二区三区人| 国产精品theporn| 欧美日韩中文一区二区| 激情综合网址| 亚洲视频国产| 久久不见久久见免费视频7 | 国产欧美一区| 日韩伦理福利| 在线亚洲免费| 国产精一区二区| 国内精品福利| 国产精品一区二区精品视频观看| 久久三级福利| 欧美韩一区二区| 亚洲久草在线| 99国产精品免费视频观看| 国产情侣久久| 亚洲va中文在线播放免费| 日韩成人av影视| 亚洲综合精品| 91精品在线观看国产| 久久亚洲美女| 日韩激情一区| 国产亚洲久久| 亚洲一区二区三区高清不卡| 免费精品一区| 久久狠狠亚洲综合| 综合一区二区三区| 香蕉国产精品| 日本亚洲最大的色成网站www| 亚洲a在线视频| 日韩免费av| 日韩中文在线电影| 都市激情国产精品| 国产66精品| 福利一区和二区| 国产亚洲精品精品国产亚洲综合| 三级欧美韩日大片在线看| 亚洲精品电影| 在线一区视频| 日韩午夜av在线| 亚洲综合日韩| 奇米亚洲欧美| 国产欧美日韩综合一区在线播放| 亚洲免费在线| 亚洲三级在线| 欧美天堂一区| 久久不卡日韩美女| 成人在线丰满少妇av| 欧美日本不卡高清| 蜜桃成人精品| 欧美aa一级| 欧美日韩视频网站| 亚洲午夜91| 亚洲日本免费电影| 中文字幕av亚洲精品一部二部| 日韩精品国产欧美| 麻豆一区二区在线| 日韩一区二区三区免费播放| 成人精品亚洲| 男人操女人的视频在线观看欧美| 91成人网在线观看| 日韩国产欧美视频| 在线中文字幕播放| 亚洲精品**中文毛片| 日韩午夜免费| 久久一二三区| 久久av超碰| 麻豆成人在线| 红杏一区二区三区| 欧美.日韩.国产.一区.二区| 青青国产精品| 1024精品久久久久久久久| 91欧美精品| 久久婷婷激情| 国产九九精品| 首页欧美精品中文字幕| 精品久久国产一区| 日韩有吗在线观看| 激情视频一区二区三区| 日韩欧美自拍| 婷婷激情图片久久| 国产亚洲电影| 亚洲欧洲一区二区天堂久久| 欧美精品91| 麻豆成人91精品二区三区| 国产精品亚洲综合色区韩国| 视频一区国产视频| 久久亚洲一区| 亚洲日本在线观看视频| 日本国产亚洲| 日本不卡在线视频| 日韩av影院| 国产欧美丝祙| 精品久久久久中文字幕小说| 日产午夜精品一线二线三线| 精品国产乱码久久久久久樱花| 国产麻豆一区二区三区精品视频| 中文字幕亚洲精品乱码| 亚洲精品大片| 久久精品国产亚洲一区二区三区| 久久精品国产成人一区二区三区| 久久久久久一区二区| 亚洲国产专区| 久久av一区| 久久国产婷婷国产香蕉| 欧美亚洲一级| 久久影院一区二区三区| 久久久男人天堂| 欧美日韩精品免费观看视频完整| 亚洲免费福利一区| 国产精品久久久一区二区| 欧美一区自拍| 欧美天堂视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩久久精品| 四虎成人精品一区二区免费网站| 国产欧美69| 国产亚洲精品v| 国产一级成人av| 婷婷激情综合| 精品少妇一区| 免费在线视频一区| 国产精品久久久久久久久久10秀| 四虎精品永久免费| 国产偷自视频区视频一区二区| 中文一区二区| 999国产精品999久久久久久| 国产三级精品三级在线观看国产| 石原莉奈在线亚洲三区| 婷婷激情一区| 国产suv精品一区| 国产一区二区亚洲| 欧美亚洲国产日韩| 精品一区二区三区免费看| 日本在线观看不卡视频| 97久久精品| 久久亚洲资源中文字| 韩日一区二区| 国产高清一区| 国产91精品对白在线播放| 999久久久精品国产| 91久久视频| 久久伦理在线| 欧美精品aa| 色天使综合视频| 欧产日产国产精品视频| 久久国产电影| 久久中文欧美| 国产专区精品| 久久久精品网| 91欧美国产| 欧美日韩一区自拍| 99精品美女| 亚洲综合电影一区二区三区| 91精品国产调教在线观看| 日本免费在线视频不卡一不卡二|