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

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java基礎(chǔ)內(nèi)容之一Java反射技術(shù)

Java基礎(chǔ)內(nèi)容之一Java反射技術(shù)

更新時(shí)間:2020-07-30 14:46:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2110次

什么是反射?它的應(yīng)用場(chǎng)景是什么?

反射(Reflection)是Java程序開(kāi)發(fā)語(yǔ)言的特征之一,它允許運(yùn)行中的Java程序獲取自身的信息,并且可以操作類或?qū)ο蟮膬?nèi)部屬性。

重點(diǎn):是運(yùn)行時(shí)而不是編譯時(shí)

“反射”既然有“反”那么肯定有“正”,那么我們首先看一下正的一面

Java基礎(chǔ)內(nèi)容之一Java反射技術(shù)

假如你寫(xiě)了一段代碼:Object o=new Object();

運(yùn)行了起來(lái)!

首先JVM會(huì)啟動(dòng),你的代碼會(huì)編譯成一個(gè).class文件,然后被類加載器加載進(jìn)jvm的內(nèi)存中,你的類Object加載到方法區(qū)中,創(chuàng)建了Object類的class對(duì)象到堆中,注意這個(gè)不是new出來(lái)的對(duì)象,而是類的類型對(duì)象,每個(gè)類只有一個(gè)class對(duì)象,作為方法區(qū)類的數(shù)據(jù)結(jié)構(gòu)的接口。jvm創(chuàng)建對(duì)象前,會(huì)先檢查類是否加載,尋找類對(duì)應(yīng)的class對(duì)象,若加載好,則為你的對(duì)象分配內(nèi)存,初始化也就是代碼:new Object()。

上面的流程就是你自己寫(xiě)好的代碼扔給jvm去跑,跑完就over了,jvm關(guān)閉,你的程序也停止了。

上面的程序?qū)ο笫亲约簄ew的,程序相當(dāng)于寫(xiě)死了給jvm去跑。假如一個(gè)服務(wù)器上突然遇到某個(gè)請(qǐng)求哦要用到某個(gè)類,哎呀但沒(méi)加載進(jìn)jvm,是不是要停下來(lái)自己寫(xiě)段代碼,new一下,哦啟動(dòng)一下服務(wù)器!

反射是什么呢?

當(dāng)我們的程序在運(yùn)行時(shí),需要?jiǎng)討B(tài)的加載一些類這些類可能之前用不到所以不用加載到j(luò)vm,而是在運(yùn)行時(shí)根據(jù)需要才加載,這樣的好處對(duì)于服務(wù)器來(lái)說(shuō)不言而喻,舉個(gè)例子我們的項(xiàng)目底層有時(shí)是用mysql,有時(shí)用oracle,需要?jiǎng)討B(tài)地根據(jù)實(shí)際情況加載驅(qū)動(dòng)類,這個(gè)時(shí)候反射就有用了,假設(shè)com.java.dbtest.myqlConnection,com.java.dbtest.oracleConnection這兩個(gè)類我們要用,這時(shí)候我們的程序就寫(xiě)得比較動(dòng)態(tài)化,通過(guò)Class tc=Class.forName("com.java.dbtest.TestConnection");通過(guò)類的全類名讓jvm在服務(wù)器中找到并加載這個(gè)類,而如果是oracle則傳入的參數(shù)就變成另一個(gè)了。這時(shí)候就可以看到反射的好處了,這個(gè)動(dòng)態(tài)性就體現(xiàn)出java的特性了!

在spring框架中,會(huì)發(fā)現(xiàn)當(dāng)你配置各種各樣的bean時(shí),是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就會(huì)根據(jù)你的需求去動(dòng)態(tài)加載,你的程序就能健壯地運(yùn)行。

對(duì)與框架開(kāi)發(fā)人員來(lái)說(shuō),反射雖小但作用非常大,它是各種容器實(shí)現(xiàn)的核心。而對(duì)于一般的開(kāi)發(fā)者來(lái)說(shuō),不深入框架開(kāi)發(fā)則用反射用的就會(huì)少一點(diǎn),不過(guò)了解一下框架的底層機(jī)制有助于豐富自己的編程思想,也是很有益的。

知識(shí)剖析:

java反射機(jī)制提供了以下幾個(gè)功能:

在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類;

在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;

在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量和方法;

在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法。

反射涉及到四個(gè)核心類:

java.lang.Class.java:類對(duì)象;

java.lang.reflect.Constructor.java:類的構(gòu)造器對(duì)象;

java.lang.reflect.Method.java:類的方法對(duì)象;

java.lang.reflect.Field.java:類的屬性對(duì)象;

反射工作原理

反射的工作原理就是借助Class.java、Constructor.java、Method.java、Field.java這四個(gè)類在程序運(yùn)行時(shí)動(dòng)態(tài)訪問(wèn)和修改任何類的行為和狀態(tài)。

代碼實(shí)現(xiàn):

常見(jiàn)問(wèn)題:

反射的特點(diǎn)

優(yōu)點(diǎn)

靈活、自由度高:不受類的訪問(wèn)權(quán)限限制,想對(duì)類做啥就做啥;

缺點(diǎn)

性能問(wèn)題:通過(guò)反射訪問(wèn)、修改類的屬性和方法時(shí)會(huì)遠(yuǎn)慢于直接操作,但性能問(wèn)題的嚴(yán)重程度取決于在程序中是如何使用反射的。如果使用得很少,不是很頻繁,性能將不會(huì)是什么問(wèn)題;

安全性問(wèn)題:反射可以隨意訪問(wèn)和修改類的所有狀態(tài)和行為,破壞了類的封裝性,如果不熟悉被反射類的實(shí)現(xiàn)原理,隨意修改可能導(dǎo)致潛在的邏輯問(wèn)題;

兼容性問(wèn)題:因?yàn)榉瓷鋾?huì)涉及到直接訪問(wèn)類的方法名和實(shí)例名,不同版本的API如果有變動(dòng),反射時(shí)找不到對(duì)應(yīng)的屬性和方法時(shí)會(huì)報(bào)異常;

如何避免反射導(dǎo)致的性能問(wèn)題?

過(guò)多地使用反射,的確會(huì)存在性能問(wèn)題,但如果使用得當(dāng),所謂反射導(dǎo)致性能問(wèn)題也就不是問(wèn)題了,關(guān)于反射對(duì)性能的影響,參照下面的使用原則,并不會(huì)有什么明顯的問(wèn)題:

不要過(guò)于頻繁地使用反射,大量地使用反射會(huì)帶來(lái)性能問(wèn)題;

通過(guò)反射直接訪問(wèn)實(shí)例會(huì)比訪問(wèn)方法快很多,所以應(yīng)該優(yōu)先采用訪問(wèn)實(shí)例的方式。

Java基礎(chǔ)內(nèi)容之一Java反射技術(shù)

Java反射方法:http://www.dabaquan.cn/tutorial_java_advance/677.html

Java反射概述:http://www.dabaquan.cn/tutorial_java_advance/674.html

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)內(nèi)容之一Java反射技術(shù)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产福利午夜自产拍视频在线 | 亚洲精品久久久久久婷婷 | 抱着cao才爽视频 | 九九精品久久 | 久久99国产亚洲高清 | 欧美成人免费mv在线播放 | 福利视频免费观看 | 九九99久久精品影视 | 9191久久久久视频 | 青青久 | 国产一区二区免费在线观看 | 欧美福利视频在线 | 欧美日韩第三页 | 亚洲在线中文 | 看大片全色黄大色黄 | 国产性较精品视频免费 | 日日摸天天摸狠狠摸摸 | 久久免费精品视频在线观看 | 国产va免费高清在线观看 | 久久久久久久国产免费看 | 2021久久伊人精品中文字幕有 | 久热精品视频在线播放 | 国产精品久久久久久五月尺 | 哪里可以看毛片 | 亚洲乱码视频 | 在线观看国产精品入口 | 美女被羞羞产奶视频网站 | 九九综合九九综合 | 视频在线a | 久久久久中文 | 免费在线a| 一区二区三区不卡在线 | 五月天在线婷婷 | 色婷婷综合久久久 | 中文字幕久精品免费视频蜜桃视频 | 久久综合色视频 | 精品欧美一区二区在线看片 | 国产成人精品精品欧美 | 色综合久久久久综合体桃花网 | 国产精品久久亚洲一区二区 | 亚洲欧美日韩高清一区二区一 |