最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java反射機(jī)制Reflection詳解

 更新時(shí)間:2019年04月04日 08:36:30   投稿:laozhang  
在本篇文章里小編給大家分享了關(guān)于java反射機(jī)制Reflection的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。

Java語言有好些個(gè)名詞,讓人望而生畏。

上智不教即知,下愚雖教無益,中庸之人,不教不知。

人的天性中就有一點(diǎn)對(duì)未知的恐懼。

剛開始不了解,也沒認(rèn)真看,發(fā)現(xiàn)好難呀;等,靜下心來自己研究,再看其實(shí)不難,發(fā)現(xiàn)都是紙老虎,不堪一擊。

今天就來分析一下反射:Reflection 

看一下維基百科的解釋:

在諸如Java之類的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中,反射允許在程序運(yùn)行期間訪問 類、接口、字段和方法,而不必在編譯期間知道接口、字段或者方法的名稱。

反射也允許實(shí)例化對(duì)象和調(diào)用方法。

總結(jié)三點(diǎn):

第一:反射可以獲取類、接口、字段和方法的信息。

第二:不止new可以創(chuàng)建對(duì)象,反射也可以實(shí)例化對(duì)象。

第三:通過反射實(shí)現(xiàn)對(duì)方法的調(diào)用。

對(duì)于創(chuàng)建對(duì)象或者調(diào)用方法:正常的步驟是先用new關(guān)鍵詞,造一個(gè)對(duì)象,然后再使用此對(duì)象的引用去調(diào)用方法,這是正常的套路。

反射就是不按正常套路來,但是殊途同歸,本來可以一步到位的東西,他要分幾個(gè)詳細(xì)的步驟或者繞個(gè)彎走。而他的先獲取Class類對(duì)象,再去創(chuàng)建對(duì)象仿佛就是分步走。

然后通過Class類對(duì)象獲取Method,然后通過Method的invoke方法調(diào)用對(duì)象的方法就是在繞個(gè)彎。

首先要?jiǎng)?chuàng)建一個(gè)Reflection測(cè)試類

使用反射創(chuàng)建對(duì)象,用new創(chuàng)建對(duì)象就沒必要再說了。JavaAPI為反射機(jī)制提供了一些類包括Class和java.lang.reflect包下的類。

(1)第一種方式:使用Class類的forName靜態(tài)方法,可以獲取一個(gè)類對(duì)象,然后調(diào)用類對(duì)象的newInstance方法創(chuàng)建對(duì)象。

(2)第二種方式:直接使用類名.class獲取類對(duì)象,然后調(diào)用類對(duì)象的newInstance方法創(chuàng)建對(duì)象。

使用反射,獲取類的public方法,并嘗試調(diào)用類的方法。

(1)首先通過反射獲取類對(duì)象,通過類對(duì)象的getMethods方法,獲取類的所有public方法Method[]。

Method是java.lang.reflect包下的類:提供某個(gè) 類、接口 的單一方法信息,提供對(duì)方法的訪問。這個(gè)反射方法可以獲取類方法或者實(shí)例方法。

循環(huán)輸出方法名,可以看到,不止test1、3還有equals、hashCode等繼承Object的方法。

但是并沒有test2,因?yàn)樗皇莗ublic類型的方法。

(2)使用Method的invoke調(diào)用方法test1和hashCode

(3)也可以使用getMethod獲取Method,不過要注意其參數(shù)

第一個(gè)參數(shù):方法名

第二個(gè)參數(shù):此方法參數(shù)的類型集合

使用反射,獲取類的public字段,和獲取方法類似,也有兩個(gè)方法,一個(gè)是獲取所有的public字段,另一個(gè)是獲取某個(gè)public字段

使用反射,獲取類和方法的注解。(Retention(RetentionPolicy.RUNTIME),RUNTIME類型的才能獲取到)

(1)獲取類的注解

(2)獲取方法的注解

相關(guān)文章

  • springboot jpaRepository為何一定要對(duì)Entity序列化

    springboot jpaRepository為何一定要對(duì)Entity序列化

    這篇文章主要介紹了springboot jpaRepository為何一定要對(duì)Entity序列化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java基礎(chǔ)學(xué)習(xí)之關(guān)鍵字和變量數(shù)據(jù)類型的那些事

    Java基礎(chǔ)學(xué)習(xí)之關(guān)鍵字和變量數(shù)據(jù)類型的那些事

    變量就是系統(tǒng)為程序分配的一塊內(nèi)存單元,用來存儲(chǔ)各種類型的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)學(xué)習(xí)之關(guān)鍵字和變量數(shù)據(jù)類型的那些事,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Java設(shè)計(jì)模式之策略模式示例詳解

    Java設(shè)計(jì)模式之策略模式示例詳解

    策略模式屬于Java?23種設(shè)計(jì)模式中行為模式之一,該模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以相互替換,且算法的變化不會(huì)影響使用算法的客戶。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下
    2022-03-03
  • Java?Spring?boot實(shí)現(xiàn)生成二維碼

    Java?Spring?boot實(shí)現(xiàn)生成二維碼

    大家好,本篇文章主要講的是Java?Spring?boot實(shí)現(xiàn)生成二維碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • RocketMQ NameServer 核心源碼解析

    RocketMQ NameServer 核心源碼解析

    這篇文章主要為大家介紹了RocketMQ NameServer 核心源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 一文帶你掌握J(rèn)ava?Future模式的靈活應(yīng)用

    一文帶你掌握J(rèn)ava?Future模式的靈活應(yīng)用

    Future模式,簡(jiǎn)單來說,就是一種能夠管理異步操作的方式,它可以讓咱們的程序在執(zhí)行一個(gè)耗時(shí)任務(wù)的同時(shí),還能繼續(xù)做其他事情,下面我們就來看看Future模式的具體應(yīng)用吧
    2024-01-01
  • javaweb圖書商城設(shè)計(jì)之購物車模塊(3)

    javaweb圖書商城設(shè)計(jì)之購物車模塊(3)

    這篇文章主要為大家詳細(xì)介紹了javaweb圖書商城設(shè)計(jì)之購物車模塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • java TreeUtil菜單遞歸工具類

    java TreeUtil菜單遞歸工具類

    這篇文章主要為大家詳細(xì)介紹了java TreeUtil菜單遞歸工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Java中unsafe操作實(shí)例總結(jié)

    Java中unsafe操作實(shí)例總結(jié)

    本篇文章給大家分享了關(guān)于Java中unsafe操作的相關(guān)知識(shí)點(diǎn)以及相關(guān)的實(shí)例代碼,有需要的朋友可以學(xué)習(xí)參考下。
    2018-03-03
  • cmd編譯運(yùn)行java程序的方法

    cmd編譯運(yùn)行java程序的方法

    本文主要介紹了cmd編譯運(yùn)行java程序的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論

东阳市| 密山市| 鄱阳县| 原阳县| 建瓯市| 全州县| 法库县| 济阳县| 柳江县| 高要市| 德阳市| 金堂县| 城口县| 茂名市| 澄迈县| 西乡县| 洛隆县| 白玉县| 开平市| 合江县| 岑巩县| 田林县| 乐陵市| 新化县| 毕节市| 宝丰县| 常德市| 桂阳县| 宿迁市| 综艺| 特克斯县| 南涧| 西昌市| 利津县| 长治县| 元氏县| 华亭县| 且末县| 英山县| 东城区| 天长市|