java反射如何獲取方法屬性和方法調(diào)用
第一步當(dāng)然是了解反射是什么
指在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象,都能調(diào)用它的任意一個(gè)方法.這種動(dòng)態(tài)獲取信息,以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能叫java語(yǔ)言的反射機(jī)制;
(通俗點(diǎn)講, 通過(guò)反射,該類對(duì)我們來(lái)說(shuō)是完全透明的,想要獲取任何東西都可以(轉(zhuǎn)載);)
下面我就通過(guò)反射獲取類中的方法
先創(chuàng)建一個(gè)類,在類中有方法,構(gòu)造器和成員變量(沒(méi)有截太多了只是提一下),在圖中可以看到有公有和私有的方法,等一下要分別獲取公有和私有的方法;
我們可以通過(guò)這三個(gè)方式去指定反射的那個(gè)類;都差不多,下面我就用class2去指定上面圖中的類;
獲取方法
步驟
- 通過(guò)getDeclaredMethods類去獲取指定類中的方法;
- 創(chuàng)建一個(gè)字符串對(duì)象,通過(guò)遍歷獲取修飾符,返回值和參數(shù);
- 因?yàn)閰?shù)可能是多個(gè)或者沒(méi)有參數(shù),所以要在獲取參數(shù)時(shí)遍歷一下參數(shù),然后將它們拼接起來(lái),方便瀏覽;
這樣就可以獲取到類中的方法:
獲取修飾符,返回值和參數(shù)的代碼沒(méi)有多少,只是為拼接的好看一點(diǎn)所以代碼的比較多;返回值可以通過(guò)getSimpleName這個(gè)類,簡(jiǎn)化它的格式;不然它會(huì)在前面加上包名和類名;
說(shuō)完了獲取,下面就了解一下如何調(diào)用這個(gè)類的方法:
注意:
1.調(diào)用getDeclaredMethod 可以訪問(wèn)公有也可以訪問(wèn)私有的方法,而getMethod(只能訪問(wèn)類中聲明為公有的方法);
2.無(wú)法直接訪問(wèn)的方法不一定是私有 設(shè)置允許訪問(wèn) method.setAccessible(true);
下面是調(diào)用方法的運(yùn)行結(jié)果:
從結(jié)果可以看到它調(diào)用了類中Say和Say1倆個(gè)方法;
反射不單單可以獲取方法,還可以獲取構(gòu)造器和成員變量;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JAVA錯(cuò)誤類結(jié)果類和分頁(yè)結(jié)果類代碼詳解
這篇文章主要介紹了JAVA錯(cuò)誤類結(jié)果類和分頁(yè)結(jié)果類代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02POI對(duì)Excel自定義日期格式的讀取(實(shí)例代碼)
下面小編就為大家?guī)?lái)一篇POI對(duì)Excel自定義日期格式的讀取(實(shí)例代碼)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11java通過(guò)url讀取遠(yuǎn)程數(shù)據(jù)并保持到本地的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了java通過(guò)url讀取遠(yuǎn)程數(shù)據(jù)并保持到本地的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)動(dòng)態(tài)權(quán)限問(wèn)題
這篇文章主要介紹了SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)-動(dòng)態(tài)權(quán)限,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06如何使用@Slf4j和logback-spring.xml搭建日志框架
這篇文章主要介紹了如何使用@Slf4j和logback-spring.xml搭建日志框架問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06maven無(wú)法自動(dòng)導(dǎo)入依賴jar包解決方式
有時(shí)候Maven無(wú)法自動(dòng)導(dǎo)入包是因?yàn)樵摪聪螺d到本地倉(cāng)庫(kù)中,本文就來(lái)介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08Java與Unix時(shí)間戳的相互轉(zhuǎn)換詳解
這篇文章主要為大家詳細(xì)介紹了Java與Unix時(shí)間戳的相互轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12