成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java學(xué)習(xí)筆記系列-反射

wing324 / 3409人閱讀

摘要:反射的本質(zhì)在運(yùn)行時(shí)能夠獲得或判斷某個(gè)對象的類型信息有一條前提就是某個(gè)對象的類型信息在編譯時(shí)必須已知。反射在中用來支持其他特性的,例如對象的序列化和對象對象是進(jìn)行反射操作的入口所以首先必須獲得對象。

反射的本質(zhì)

Java在運(yùn)行時(shí)能夠獲得或判斷某個(gè)對象的類型信息

RTTI有一條前提就是某個(gè)對象的類型信息在編譯時(shí)必須已知。RTTI的實(shí)質(zhì)就是編譯器在遍歷檢查代碼時(shí)偷偷將類型信息記錄下來并存儲,以在運(yùn)行時(shí)能夠獲得當(dāng)編寫完某個(gè).java文件,并編譯之后,就會產(chǎn)生一個(gè)Class對象,由編譯器偷偷的把這個(gè)class對象保存在編譯后的.class文件中,當(dāng)這個(gè).class文件被加載到內(nèi)存之后,隨之會在內(nèi)存中創(chuàng)建這個(gè)Class對象了。所以,獲得class對象的前提是能獲得類編譯后的.class文件。且class對象的功能強(qiáng)大,方法眾多:Class.getInterfaces()、Class.getSuperclass()、Class.getName()、Class.isInterface()等等,能用來獲得很多信息

RTTI與反射在最底層的思想上是很類似的,本質(zhì)的區(qū)別在于:對RRTI,編譯器在編譯時(shí)打開和檢查.class文件,而對反射來說,.class文件在編譯時(shí)是不可獲取的,在運(yùn)行時(shí)未知對象已經(jīng)來了再去打開和檢查.class文件

反射機(jī)制使得java能夠創(chuàng)建一個(gè)在編譯時(shí)完全未知的對象。反射在Java中用來支持其他特性的,例如對象的序列化和JavaBean

Class對象

Class對象是進(jìn)行反射操作的入口,所以首先必須獲得Class對象。除了通過實(shí)例獲取外,Class對象主要由以下幾種方法獲得:

通過類加載器加載class文件

Class clazz = Thread.currentThread().getContextClassLoader().
        loadClass("com.takumiCX.reflect.ClassTest");

通過靜態(tài)方法Class.forName()獲取,需要傳入類的全限定名字符串作參數(shù)(在獲得class對象的同時(shí)會引起類的初始化;如果指定參數(shù)initialize為false時(shí),也不會觸發(fā)類初始化,其實(shí)這個(gè)參數(shù)是告訴虛擬機(jī),是否要對類進(jìn)行初始化)

Class clazz = Class.forName("com.takumiCX.reflect.ClassTest");

通過類.class獲得類的Class對象

Class clazz = ClassTest.class;
Spring IOC反射機(jī)制

找到并加裝配置

解析配置文件中的bean元素,并識別id和class

通過反射(Class.forName().newInstance())創(chuàng)建這個(gè)bean的實(shí)例

將id作為key、實(shí)例作為value存放進(jìn)Spring容器中

getBean取出實(shí)例

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73236.html

相關(guān)文章

  • Java入門請不要放棄,學(xué)習(xí)路線以及側(cè)重點(diǎn)分析

    摘要:而面向搜索引擎,就是我們要及時(shí)的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網(wǎng)絡(luò)尋找答案,你的坑大部分別人都已經(jīng)走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們?yōu)槭裁匆獙W(xué)習(xí)Java語言呢...

    mochixuan 評論0 收藏0
  • JAVA筆記 - 收藏集 - 掘金

    摘要:動態(tài)代理個(gè)經(jīng)紀(jì)人如何代理個(gè)明星掘金在代理模式女朋友這么漂亮,你缺經(jīng)紀(jì)人嗎中我們用寶強(qiáng)的例子介紹了靜態(tài)代理模式的概念。掘金使用從頭創(chuàng)建一個(gè),這種方法比較簡單。 動態(tài)代理:1 個(gè)經(jīng)紀(jì)人如何代理 N 個(gè)明星 - Android - 掘金在 代理模式:女朋友這么漂亮,你缺經(jīng)紀(jì)人嗎? 中我們用寶強(qiáng)的例子介紹了靜態(tài)代理模式的概念。 本來我的目的是通過大家耳熟能詳?shù)睦觼砑由罾斫?,但是有些網(wǎng)友指責(zé)...

    kamushin233 評論0 收藏0
  • 筆記 - 收藏集 - 掘金

    摘要:目錄如何用提高效率后端掘金經(jīng)常有人說我應(yīng)該學(xué)一門語言,比如之類,但是卻不知道如何入門。本文將通過我是如何開發(fā)公司年會抽獎系統(tǒng)的后端掘金需求出現(xiàn)年會將近,而年會抽獎環(huán)節(jié)必不可少,但是抽獎系統(tǒng)卻還沒有。 云盤一個(gè)個(gè)倒下怎么辦?無需編碼,手把手教你搭建至尊私享云盤 - 工具資源 - 掘金微盤掛了,360倒了,百度云盤也立了Flag。能讓我們在云端儲存分享文件的服務(wù)越來越少了。 買一堆移動硬盤...

    Alex 評論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實(shí)現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點(diǎn)如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計(jì)模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點(diǎn)點(diǎn)滴滴,依然清楚的記得當(dāng)初愛情萌芽的模樣…… Java 進(jìn)階面試問題列表 -...

    chengtao1633 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<