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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java基礎(chǔ)學(xué)習(xí):java反射實現(xiàn)機制

Java基礎(chǔ)學(xué)習(xí):java反射實現(xiàn)機制

更新時間:2020-04-15 14:21:22 來源:動力節(jié)點 瀏覽2497次

    反射(Reflection)是Java程序開發(fā)語言的特征之一,它允許運行中的Java程序?qū)ψ陨磉M行檢查,或者說“自審”,并能直接操作程序的內(nèi)部屬性和方法。

Java基礎(chǔ)學(xué)習(xí):java反射實現(xiàn)機制

    反射是一項高級開發(fā)人員應(yīng)該掌握的“黑科技”,其實反射并不是Java獨有的,許多編程語言都提供了反射功能。在面試中面試官也經(jīng)常對反射問題進行考察,反射是所有注解實現(xiàn)的原理,尤其在框架設(shè)計中,有不可替代的作用。

    關(guān)于反射,常見的面試考察點包括:

    如何反射獲取Class對象

    如何反射獲取類中的所有字段

    如何反射獲取類中的所有構(gòu)造方法

    如何反射獲取類中的所有非構(gòu)造方法

    本篇我們就一起來學(xué)習(xí)一下Java反射機制。

    一、反射是什么?

    反射的概念是由Smith在1982年首次提出的,主要是指程序可以訪問、檢測和修改它本身狀態(tài)或行為的一種能力。

    通俗地講,一提到反射,我們就可以想到鏡子。鏡子可以明明白白地照出我是誰,還可以照出別人是誰。反映到程序中,反射就是用來讓開發(fā)者知道這個類中有什么成員,以及別的類中有什么成員。

    二、為什么要有反射

    有的同學(xué)可能會疑惑,Java已經(jīng)有了封裝為什么還要有反射呢?反射看起來像是破壞了封裝性。甚至讓私有變量都可以被外部訪問到,使得類變得不那么安全了。

    我們來看一下Oracle官方文檔中對反射的描述:

    UsesofReflection

    ReflectioniscommonlyusedbyprogramswhichrequiretheabilitytoexamineormodifytheruntimebehaviorofapplicationsrunningintheJavavirtualmachine.Thisisarelativelyadvancedfeatureandshouldbeusedonlybydeveloperswhohaveastronggraspofthefundamentalsofthelanguage.Withthatcaveatinmind,reflectionisapowerfultechniqueandcanenableapplicationstoperformoperationswhichwouldotherwisebeimpossible.

    ExtensibilityFeatures

    Anapplicationmaymakeuseofexternal,user-definedclassesbycreatinginstancesofextensibilityobjectsusingtheirfully-qualifiednames.

    ClassBrowsersandVisualDevelopmentEnvironments

Aclassbrowserneedstobeabletoenumeratethemembersofclasses.Visualdevelopmentenvironmentscanbenefitfrommakinguseoftypeinformationavailableinreflectiontoaidthedeveloperinwritingcorrectcode.

    DebuggersandTestTools

 Debuggersneedtobeabletoexamineprivatemembersonclasses.TestharnessescanmakeuseofreflectiontosystematicallycalladiscoverablesetAPIsdefinedonaclass,toinsureahighlevelofcodecoverageinatestsuite.

    從Oracle官方文檔中可以看出,反射主要應(yīng)用在以下幾方面:

    反射讓開發(fā)人員可以通過外部類的全路徑名創(chuàng)建對象,并使用這些類,實現(xiàn)一些擴展的功能。

    反射讓開發(fā)人員可以枚舉出類的全部成員,包括構(gòu)造函數(shù)、屬性、方法。以幫助開發(fā)者寫出正確的代碼。

    測試時可以利用反射API訪問類的私有成員,以保證測試代碼覆蓋率。

    也就是說,Oracle希望開發(fā)者將反射作為一個工具,用來幫助程序員實現(xiàn)本不可能實現(xiàn)的功能(performoperationswhichwouldotherwisebeimpossible)。正如《人月神話》一書中所言:軟件工程沒有銀彈。很多程序架構(gòu),尤其是三方框架,無法保證自己的封裝是完美的。如果沒有反射,對于外部類的私有成員,我們將一籌莫展,所以我們有了反射這一后門,為程序設(shè)計提供了更大的靈活性。工具本身并沒有錯,關(guān)鍵在于如何正確地使用。

Java基礎(chǔ)學(xué)習(xí):java反射實現(xiàn)機制

 以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“Java基礎(chǔ)學(xué)習(xí):java反射實現(xiàn)機制”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲 欧美 另类 天天更新影院 | www.久久视频| 免费观看性欧美毛片 | 午夜精品久久久久久久90蜜桃 | 亚洲精品乱码蜜桃久久久 | 国产高清精品久久久久久久 | 99免费在线观看 | 国内成人免费视频 | 国产精品福利一区二区久久 | 一区二区国产一区二区a4yy | 嗯啊在线观看免费影院 | 热99这里只有精品 | 国产成人精品区在线观看 | 香蕉成人在线 | 午夜精品久久久久久久90蜜桃 | 男女性高清爱潮视频免费观看 | 亚洲欧美综合区自拍另类 | 伊人情人综合成人久久网小说 | 狠狠狠地啪香蕉 | 一级欧美毛片成人免费视频 | 内衣办公室动漫久久影院 | a级高清观看视频在线看 | 四虎国产精品永久地址51 | 日韩www视频 | 久久久久在线观看 | 成人免费毛片网站 | 欧美黄色免费在线观看 | 黄色毛片免费在线观看 | 亚洲国产精品a在线 | 四虎欧美永久在线精品免费 | 99精品久久久久久久免费看蜜月 | 久久精品国产欧美日韩亚洲 | www.色综合| 久久久久久亚洲精品影院 | 久9热精品视频在线观看 | 91麻豆精品国产91久久久久久 | 天天操天天射天天 | 在线播放免费一级毛片欧美 | 91最新视频在线观看 | 国产欧美日本在线观看 | 日韩欧美一区二区久久黑人 |