黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java基礎學習:java反射實現機制

更新時間:2020-04-15 14:21:22 來源:動力節點 瀏覽2500次

    反射(Reflection)是Java程序開發語言的特征之一,它允許運行中的Java程序對自身進行檢查,或者說“自審”,并能直接操作程序的內部屬性和方法。

Java基礎學習:java反射實現機制

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

    關于反射,常見的面試考察點包括:

    如何反射獲取Class對象

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

    如何反射獲取類中的所有構造方法

    如何反射獲取類中的所有非構造方法

    本篇我們就一起來學習一下Java反射機制。

    一、反射是什么?

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

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

    二、為什么要有反射

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

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

    UsesofReflection

    ReflectioniscommonlyusedbyprogramswhichrequiretheabilitytoexamineormodifytheruntimebehaviorofapplicationsrunningintheJavavirtualmachine.Thisisarelativelyadvancedfeatureandshouldbeusedonlybydeveloperswhohaveastronggraspofthefundamentalsofthelanguage.Withthatcaveatinmind,reflectionisapowerfultechniqueandcanenableapplicationstoperformoperationswhichwouldotherwisebeimpossible.

    ExtensibilityFeatures

    Anapplicationmaymakeuseofexternal,user-definedclassesbycreatinginstancesofextensibilityobjectsusingtheirfully-qualifiednames.

    ClassBrowsersandVisualDevelopmentEnvironments

Aclassbrowserneedstobeabletoenumeratethemembersofclasses.Visualdevelopmentenvironmentscanbenefitfrommakinguseoftypeinformationavailableinreflectiontoaidthedeveloperinwritingcorrectcode.

    DebuggersandTestTools

 Debuggersneedtobeabletoexamineprivatemembersonclasses.TestharnessescanmakeuseofreflectiontosystematicallycalladiscoverablesetAPIsdefinedonaclass,toinsureahighlevelofcodecoverageinatestsuite.

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

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

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

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

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

Java基礎學習:java反射實現機制

 以上就是動力節點java培訓機構的小編針對“Java基礎學習:java反射實現機制”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩美女视频在线 | 51视频在线 | 毛片无码国产 | 国产精品小黄鸭一区二区三区 | 亚洲成人免费在线观看 | 动漫美女h黄18动漫免费观看 | 天天艹天天 | 久久婷婷五月综合色丁香 | 一区二区三区精品视频 | 精品国产一区二区三区19 | 在线看欧美成人中文字幕视频 | 香蕉视频首页 | 有没有在线看片www 又www又黄又爽啪啪网站 | 久久怡红院 | 天堂最新资源在线 | 亚洲va中文va欧美va爽爽 | 天天爱夜夜操 | 精品91自产拍在线观看99re | 午夜性a一级毛片 | 国产精品美女视视频专区 | 亚欧日韩 | 日韩亚洲欧美视频 | ts人妖另类国产 | 国产精品密蕾丝视频 | 欧美三级不卡视频 | 另类欧美日韩 | 怡红院成人影院 | 最新欧美精品一区二区三区不卡 | 亚洲成人影院在线观看 | 成人久久免费视频 | 日本理论片在线播放 | 免费黄篇 | 日本人免费xxx在线视频 | 理论片免费欧美片 | 黄色网址免费观看 | 精品一区二区视频在线观看 | 三级视频黄色 | 视频一区二区国产 | 天天久久| 人人干人人插 | 大又大又粗又爽又黄毛片女人 |