Java中反射的一個(gè)簡(jiǎn)單使用
簡(jiǎn)介
首先介紹一些不太實(shí)用的解釋?zhuān)篔AVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意方法和屬性;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。
簡(jiǎn)單使用
反射,在java中是非常常見(jiàn)和好用的一種方式,(但是大家需要知道,他的效率是比較低的,所以要慎用)當(dāng)然在基于java語(yǔ)言而產(chǎn)生的Android中也是可以使用的,我們可以使用反射來(lái)獲取一些系統(tǒng)并不開(kāi)放,但是存在的類(lèi),從而調(diào)用他的一些方法,下面就簡(jiǎn)單的寫(xiě)一下,利用java反射來(lái)獲取類(lèi)和調(diào)用它的方法的實(shí)現(xiàn)。
//需要被反射調(diào)用的類(lèi)的路徑
String className = "com.example.test.JavaReflect";Class reflect = null;
try {
//通過(guò)路徑來(lái)獲取java類(lèi)
reflect = Class.forName(className);
//實(shí)例化對(duì)應(yīng)得類(lèi)
Object javaReflect = reflect.newInstance();
if(null != javaReflect) {
//反射出該Class類(lèi)中的stringToUp()方法 stringToUp是方法名,String.class是參數(shù)類(lèi)型
Method stringToUp = reflect.getDeclaredMethod("stringToUp", String.class);
//取消訪問(wèn)私有方法的合法性檢查
stringToUp.setAccessible(true);
//調(diào)用stringToUp()方法,第一個(gè)參數(shù)表示對(duì)應(yīng)的類(lèi),第二個(gè)是方法的參數(shù)
String str = (String) stringToUp.invoke(javaReflect,"java reflect test");
System.out.println("result:"+str);
}
}catch (Exception e) {
e.printStackTrace();
}
我們來(lái)看一下,在stringToUp里面做了什么:
public String stringToUp(String str){
return str.toUpperCase();
}
其實(shí)就是一個(gè)對(duì)字符串轉(zhuǎn)換成大寫(xiě),然返回,好了我們來(lái)看一下輸出結(jié)果:
01-02 08:09:11.959 6150-6150/com.zxf.alpha I/System.out: result:JAVA REFLECT TEST
簡(jiǎn)直就是完美。
總結(jié)
好了,以上就是這篇文章的全部?jī)?nèi)容了,反射在Android中的應(yīng)用范圍也很多,比如我們項(xiàng)目有多個(gè)module的時(shí)候,你想在module里面調(diào)用主的程序的一個(gè)方法你就可以這么干,也可以用反射來(lái)調(diào)用一些系統(tǒng)為公開(kāi)的方法,但是效率不太高。希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用Java中的放射能有所幫助,如果有疑問(wèn)大家可以留言交流。
- Java反射之靜態(tài)加載和動(dòng)態(tài)加載的簡(jiǎn)單實(shí)例
- Java 反射機(jī)制詳解及實(shí)例代碼
- Java通過(guò)反射機(jī)制動(dòng)態(tài)設(shè)置對(duì)象屬性值的方法
- Java的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡(jiǎn)單方法
- Java 反射調(diào)用靜態(tài)方法的簡(jiǎn)單實(shí)例
- Java反射機(jī)制詳解
- Java反射機(jī)制及Method.invoke詳解
- java根據(jù)方法名稱(chēng)取得反射方法的參數(shù)類(lèi)型示例
- java 反射機(jī)制
- Java中反射詳解
相關(guān)文章
mybatisplus自動(dòng)填充屬性值的實(shí)現(xiàn)步驟
MyBatis-Plus提供自動(dòng)填充的功能,幫助自定設(shè)置這些字段的值,提升開(kāi)發(fā)效率,本文就來(lái)介紹一下如何使用,感興趣的可以了解一下2023-12-12
SpringCloud中數(shù)據(jù)認(rèn)證加密的方法總結(jié)
在當(dāng)今分布式系統(tǒng)的日益復(fù)雜和信息傳遞的廣泛網(wǎng)絡(luò)化環(huán)境中,數(shù)據(jù)的加密和認(rèn)證作為保障信息傳遞安全的關(guān)鍵手段,Spring?Cloud,作為一套構(gòu)建微服務(wù)架構(gòu)的強(qiáng)大框架,提供了多種靈活而強(qiáng)大的數(shù)據(jù)加密和認(rèn)證方式,本文給大家總結(jié)了SpringCloud數(shù)據(jù)認(rèn)證加密的方法2024-03-03
SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能(最新推薦)
這篇文章主要介紹了SpringBoot整合ShardingSphere5.x實(shí)現(xiàn)數(shù)據(jù)加解密功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)
本篇教程給大家分享基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn),驗(yàn)證碼功能的實(shí)現(xiàn)是采用Zuul網(wǎng)關(guān)的Filter過(guò)濾器進(jìn)行校驗(yàn)驗(yàn)證碼,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-05-05
線程局部變量的實(shí)現(xiàn)?ThreadLocal使用及場(chǎng)景介紹
這篇文章主要為大家介紹了線程局部變量的實(shí)現(xiàn)?ThreadLocal使用及場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
SpringBoot實(shí)現(xiàn)IP地址解析的示例代碼
本篇帶大家實(shí)踐在springboot項(xiàng)目中獲取請(qǐng)求的ip與詳細(xì)地址,我們的很多網(wǎng)站app中都已經(jīng)新增了ip地址顯示,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07

