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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年面試經常問到的Java反射面試題

2020年面試經常問到的Java反射面試題

更新時間:2020-07-01 15:59:45 來源:動力節(jié)點 瀏覽5429次


一、反射是什么?


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


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


二、為什么要有反射


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


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


Uses of Reflection


Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine.This is a relatively advanced feature and should be used only by developers who have a strong grasp of the fundamentals of the language.With that caveat in mind,reflection is a powerful technique and can enable applications to perform operations which would otherwise be impossible.


Extensibility Features


An application may make use of external,user-defined classes by creating instances of extensibility objects using their fully-qualified names.


Class Browsers and Visual Development Environments


A class browser needs to be able to enumerate the members of classes.Visual development environments can benefit from making use of type information available in reflection to aid the developer in writing correct code.


Debuggers and Test Tools


Debuggers need to be able to examine private members on classes.Test harnesses can make use of reflection to systematically call a discoverable set APIs defined on a class,to insure a high level of code coverage in a test suite.


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


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


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


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


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


三、反射API


Java類的成員包括以下三類:屬性字段、構造函數、方法。反射的API也是與這幾個成員相關:


2020年面試經常問到的Java反射面試題


Field類:提供有關類的屬性信息,以及對它的動態(tài)訪問權限。它是一個封裝反射類的屬性的類。


Constructor類:提供有關類的構造方法的信息,以及對它的動態(tài)訪問權限。它是一個封裝反射類的構造方法的類。


Method類:提供關于類的方法的信息,包括抽象方法。它是用來封裝反射類方法的一個類。


Class類:表示正在運行的Java應用程序中的類的實例。


Object類:Object是所有Java類的父類。所有對象都默認實現了Object類的方法。


接下來,我們通過一個典型的例子來學習反射。


先做準備工作,新建com.test.reflection包,在此包中新建一個Student類:

2020年面試經常問到的Java反射面試題


可以看到,Student 類中有兩個 字段、兩個 構造方法、兩個 函數,且都是一個私有,一個公有。由此可知,這個測試類基本涵蓋了我們平時常用的所有類成員。


以上就是動力節(jié)點java培訓機構的小編針對“2020年面試經常問到的Java反射面試題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 中文字幕欧美日韩高清 | 国产精品女丝袜白丝袜 | 久久精品日日躁精品 | 国产成人精品三级在线 | 免费看的夫妻生活片 | 国产xx做受视频国语对白 | 日日噜噜夜夜狠狠va视频 | 国产最新精品2020好看的 | 激情伊人 | 美腿丝袜中文字幕 | 日韩欧美一区黑人vs日本人 | 国产亚洲欧美日本一二三本道 | 图片区小说区av区 | 国产成人免费a在线资源 | 国产精品七七在线播放 | 欧美曰批人成在线观看 | 久久七 | 怡春院院日本一区二区久久 | 美国一级毛片免费看成人 | 福利片影院 | 羞羞视频免费网站在线看 | 中文字幕亚洲天堂 | 久久综合久久久 | 视频一本大道香蕉久在线播放 | 国产免费理论片在线观看 | 亚洲 日本 欧美 日韩精品 | 欧美乱大交黑人 | 黄色成人在线观看 | 亚洲香蕉一区二区三区在线观看 | 国产色一区| 小明在看看永久免费平台 | 在线观看中文字幕码2022 | 欧美成年人网站 | 免费高清小黄站在线观看 | 两性午夜又粗又大又爽视频 | 亚洲 另类色区 欧美日韩 | 欧美在线视频免费观看 | 国产黄色片一级 | 美女激情影院午夜网 | 国产成人宗合 | 天天爽夜夜爽人人爽免费 |