日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

面試官:說說反射的底層實現(xiàn)原理?

來源: 責(zé)編: 時間:2024-03-18 09:41:47 235觀看
導(dǎo)讀反射是 Java 面試中必問的面試題,但只有很少人能真正的理解“反射”并講明白反射,更別說能說清楚它的底層實現(xiàn)原理了。所以本文就通過大白話的方式來系統(tǒng)的講解一下反射,希望大家看完之后能真正的理解并掌握“反射”這項

amC28資訊網(wǎng)——每日最新資訊28at.com

反射是 Java 面試中必問的面試題,但只有很少人能真正的理解“反射”并講明白反射,更別說能說清楚它的底層實現(xiàn)原理了。所以本文就通過大白話的方式來系統(tǒng)的講解一下反射,希望大家看完之后能真正的理解并掌握“反射”這項技術(shù)。amC28資訊網(wǎng)——每日最新資訊28at.com

1.什么是反射?

反射在程序運行期間動態(tài)獲取類和操縱類的一種技術(shù)。amC28資訊網(wǎng)——每日最新資訊28at.com

2.反射的應(yīng)用有哪些?

反射在日常開發(fā)中使用的地方有很多,例如以下幾個:amC28資訊網(wǎng)——每日最新資訊28at.com

  • 動態(tài)代理:反射是動態(tài)代理的底層實現(xiàn),即在運行時動態(tài)地創(chuàng)建代理對象,并攔截和增強方法調(diào)用。這常用于實現(xiàn) AOP 功能,如日志記錄、事務(wù)管理等。
  • Bean 創(chuàng)建:Spring/Spring Boot 項目中,在項目啟動時,創(chuàng)建的 Bean 對象就是通過反射來實現(xiàn)的。
  • JDBC 連接:JDBC 中的 DriverManager 類通過反射加載并注冊數(shù)據(jù)庫驅(qū)動,這是 Java 數(shù)據(jù)庫連接的標(biāo)準(zhǔn)做法。

3.反射實現(xiàn)

反射的關(guān)鍵實現(xiàn)方法有以下幾個:amC28資訊網(wǎng)——每日最新資訊28at.com

  • 得到類:Class.forName("類名")
  • 得到所有字段:getDeclaredFields()
  • 得到所有方法:getDeclaredMethods()
  • 得到構(gòu)造方法:getDeclaredConstructor()
  • 得到實例:newInstance()
  • 調(diào)用方法:invoke()

具體使用示例如下:amC28資訊網(wǎng)——每日最新資訊28at.com

// 1.反射得到對象Class<?> clazz = Class.forName("User");// 2.得到方法Method method = clazz.getDeclaredMethod("publicMethod");// 3.得到靜態(tài)方法Method staticMethod = clazz.getDeclaredMethod("staticMethod");// 4.執(zhí)行靜態(tài)方法staticMethod.invoke(clazz);

反射執(zhí)行私有方法代碼實現(xiàn)如下:amC28資訊網(wǎng)——每日最新資訊28at.com

// 1.反射得到對象Class<?> clazz = Class.forName("User");// 2.得到私有方法Method privateMethod = clazz.getDeclaredMethod("privateMethod");// 3.設(shè)置私有方法可訪問privateMethod.setAccessible(true);// 4.得到實例Object user = clazz.getDeclaredConstructor().newInstance();// 5.執(zhí)行私有方法privateMethod.invoke(user);

4.底層實現(xiàn)原理

從上述內(nèi)容可以看出,對于反射來說,操縱類最主要的方法是 invoke,所以搞懂了 invoke 方法的實現(xiàn),也就搞定了反射的底層實現(xiàn)原理了。amC28資訊網(wǎng)——每日最新資訊28at.com

invoke 方法的執(zhí)行流程如下:amC28資訊網(wǎng)——每日最新資訊28at.com

  • 查找方法:當(dāng)通過 java.lang.reflect.Method 對象調(diào)用 invoke 方法時,Java 虛擬機(JVM)首先確認(rèn)該方法是否存在并可以訪問。這包括檢查方法的訪問權(quán)限、方法簽名是否匹配等。
  • 安全檢查:如果方法是私有的或受保護(hù)的,還需要進(jìn)行訪問權(quán)限的安全檢查。如果當(dāng)前調(diào)用者沒有足夠的權(quán)限訪問這個方法,將拋出 IllegalAccessException。
  • 參數(shù)轉(zhuǎn)換和適配:invoke 方法接受一個對象實例和一組參數(shù),需要將這些參數(shù)轉(zhuǎn)換成對應(yīng)方法簽名所需要的類型,并且進(jìn)行必要的類型檢查和裝箱拆箱操作。
  • 方法調(diào)用:對于非私有方法,Java 反射實際上是通過 JNI(Java Native Interface,Java 本地接口)調(diào)用到 JVM 內(nèi)部的 native 方法,例如 java.lang.reflect.Method.invoke0()。這個 native 方法負(fù)責(zé)完成真正的動態(tài)方法調(diào)用。對于 Java 方法,JVM 會通過方法表、虛方法表(vtable)進(jìn)行查找和調(diào)用;對于非虛方法或者靜態(tài)方法,JVM 會直接調(diào)用相應(yīng)的方法實現(xiàn)。
  • 異常處理:在執(zhí)行方法的過程中,如果出現(xiàn)任何異常,JVM 會捕獲并將異常包裝成 InvocationTargetException 拋出,應(yīng)用程序可以通過這個異常獲取到原始異常信息。
  • 返回結(jié)果:如果方法正常執(zhí)行完畢,invoke 方法會返回方法的執(zhí)行結(jié)果,或者如果方法返回類型是 void,則不返回任何值。

通過這種方式,Java 反射的 invoke 方法能夠打破編譯時的綁定,實現(xiàn)運行時動態(tài)調(diào)用對象的方法,提供了極大的靈活性,但也帶來了運行時性能損耗和安全隱患(如破壞封裝性、違反訪問控制等)。amC28資訊網(wǎng)——每日最新資訊28at.com

5.優(yōu)缺點分析

反射的優(yōu)點如下:amC28資訊網(wǎng)——每日最新資訊28at.com

  • 靈活性:使用反射可以在運行時動態(tài)加載類,而不需要在編譯時就將類加載到程序中。這對于需要動態(tài)擴展程序功能的情況非常有用。
  • 可擴展性:使用反射可以使程序更加靈活和可擴展,同時也可以提高程序的可維護(hù)性和可測試性。
  • 實現(xiàn)更多功能:許多框架都使用反射來實現(xiàn)自動化配置和依賴注入等功能。例如,Spring 框架就使用反射來實現(xiàn)依賴注入。

反射的缺點如下:amC28資訊網(wǎng)——每日最新資訊28at.com

  • 性能問題:使用反射會帶來一定的性能問題,因為反射需要在運行時動態(tài)獲取類的信息,這比在編譯時就獲取信息要慢。
  • 安全問題:使用反射可以訪問和修改類的字段和方法,這可能會導(dǎo)致安全問題。因此,在使用反射時需要格外小心,確保不會對程序的安全性造成影響。

本文鏈接:http://m.www897cc.com/showinfo-26-76526-0.html面試官:說說反射的底層實現(xiàn)原理?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 八大編程語言在網(wǎng)絡(luò)安全領(lǐng)域的優(yōu)勢和職業(yè)機會

下一篇: DDIA:消息系統(tǒng)—生產(chǎn)者和消費者的游戲?

標(biāo)簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美资源在线| 99国内精品久久| 国产精品h在线观看| 欧美日韩在线一区二区| 国产精品久久久久久影院8一贰佰| 国产精品一区二区久久 | 国产伪娘ts一区| 一区二区亚洲精品国产| 亚洲精品视频二区| 亚洲欧美日韩国产成人| 久久婷婷色综合| 欧美日韩精品免费| 国产日韩精品一区二区三区| 在线播放亚洲一区| 在线一区视频| 久久精品五月| 欧美日韩高清在线| 国产一在线精品一区在线观看| 亚洲国产片色| 欧美一二三视频| 欧美精品在线免费| 国产伊人精品| 亚洲色图综合久久| 美日韩在线观看| 国产精品亚洲综合色区韩国| 亚洲韩国日本中文字幕| 香蕉免费一区二区三区在线观看| 毛片基地黄久久久久久天堂| 国产精品你懂的在线| 亚洲欧洲一区二区三区| 欧美一区二区在线看| 欧美日韩一级片在线观看| 伊人春色精品| 羞羞色国产精品| 欧美日韩精品免费观看视频完整| 韩国久久久久| 亚洲欧美日韩综合一区| 欧美老女人xx| 亚洲第一色在线| 欧美制服丝袜第一页| 欧美视频1区| 亚洲日本激情| 可以看av的网站久久看| 国产精品一区二区女厕厕| 日韩亚洲综合在线| 麻豆精品在线观看| 国语对白精品一区二区| 亚洲摸下面视频| 欧美日韩免费观看一区=区三区| 黄色成人在线网站| 性感少妇一区| 国产精品久久久久久久久久尿| 亚洲日本成人女熟在线观看| 久久久欧美精品sm网站| 国产欧美日韩伦理| 亚洲自拍另类| 欧美性色综合| 一本色道久久综合亚洲精品不| 免费不卡亚洲欧美| 精品不卡一区| 久久激情中文| 国产欧美日韩在线视频| 亚洲一区二区三区色| 欧美日韩一区二区三区在线| 久久成人免费电影| 国产精品永久免费| 亚洲性夜色噜噜噜7777| 欧美日韩成人综合| 亚洲美女毛片| 欧美激情1区2区3区| 亚洲国产精品t66y| 久久综合九色99| 一区二区视频欧美| 久久亚洲精选| 好吊日精品视频| 久久精品夜色噜噜亚洲aⅴ| 国产麻豆9l精品三级站| 亚洲永久免费精品| 国产精品久久久久久久久久久久| 一区二区精品在线观看| 欧美日韩国产色视频| 亚洲精品资源| 欧美日本韩国| 99热这里只有成人精品国产| 欧美精品亚洲精品| 99re6热只有精品免费观看 | 欧美丝袜一区二区| 在线视频欧美日韩| 欧美午夜精品久久久久免费视 | 亚洲国产婷婷香蕉久久久久久99 | 欧美电影在线播放| 亚洲人成在线观看| 欧美精品在线一区二区三区| 亚洲九九精品| 欧美日韩国产综合视频在线观看| 亚洲乱码日产精品bd| 欧美另类综合| 在线视频欧美日韩| 国产精品免费福利| 欧美一区二区成人6969| 国产一级揄自揄精品视频| 久久精品一区二区| 亚洲成人资源网| 欧美精品一区视频| 亚洲五月婷婷| 国产视频丨精品|在线观看| 久久久噜噜噜久久| 亚洲国产欧美一区| 欧美日韩亚洲一区二区三区在线观看| 亚洲图色在线| 国产一区二区观看| 欧美mv日韩mv国产网站app| 日韩写真在线| 国产精品麻豆va在线播放| 欧美一区视频| 亚洲第一精品福利| 欧美日本不卡视频| 午夜影院日韩| 亚洲第一在线视频| 欧美视频在线观看免费| 性欧美大战久久久久久久免费观看 | 亚洲久久在线| 国产精品久久久久久久久| 久久激情五月激情| 亚洲精品日产精品乱码不卡| 国产精品久久亚洲7777| 久久久久久久综合| 一本色道久久综合亚洲精品不卡| 国产亚洲免费的视频看| 欧美不卡激情三级在线观看| 亚洲淫性视频| 一区二区视频免费完整版观看| 欧美日韩免费高清一区色橹橹| 欧美一区二区视频在线观看2020| 亚洲国产欧美在线人成| 国产精品久久久久影院亚瑟| 久久人人看视频| 中文一区二区| 在线不卡中文字幕播放| 国产精品激情| 欧美成人免费在线| 欧美一区二区三区四区在线观看地址| 亚洲国产成人午夜在线一区| 国产精品久久久久久超碰| 乱中年女人伦av一区二区| 亚洲自拍偷拍福利| 亚洲国产经典视频| 国产精品影视天天线| 欧美国产视频在线| 久久成人人人人精品欧| 一级成人国产| 在线观看国产欧美| 国产精品一区二区三区免费观看| 欧美成人自拍| 久久动漫亚洲| 一区二区三区回区在观看免费视频| 精品999在线观看| 国产精品蜜臀在线观看| 欧美国产一区二区在线观看| 欧美一区二区三区在线看 | 1000部国产精品成人观看| 国产精品乱人伦一区二区| 免费成人在线视频网站| 欧美一区二区高清在线观看| 亚洲美女精品成人在线视频| 一区二区三区在线看| 国产欧美日韩在线观看| 欧美体内she精视频| 欧美顶级少妇做爰| 久久频这里精品99香蕉| 亚洲欧美日韩在线一区| 一本色道久久综合狠狠躁的推荐| 亚洲电影av在线| 国产一区二区毛片| 国产精品日韩久久久久| 欧美日韩调教| 欧美激情精品久久久六区热门 | 一区二区在线不卡| 国产欧美日韩一级| 国产精品久久久久婷婷| 欧美日韩亚洲激情| 欧美久久视频| 欧美福利视频| 久久在线观看视频| 久久精品五月| 久久国产直播| 欧美一区三区二区在线观看| 亚洲一区二区黄| 一本久道综合久久精品| 亚洲精品在线免费观看视频| 亚洲国产精品久久久久秋霞不卡| 国产一区亚洲一区| 国产亚洲欧洲997久久综合| 国产女人aaa级久久久级| 国产精品视频午夜| 国产精品综合视频| 国产精品一区视频网站| 国产精品区免费视频| 国产精品久久久久久久久久免费| 欧美午夜女人视频在线| 欧美午夜一区| 国产精品成人免费| 国产精品理论片| 国产伦精品一区二区三区免费|