Java中反射的一個(gè)簡單使用
簡介
首先介紹一些不太實(shí)用的解釋:JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對于任意一個(gè)對象,都能夠調(diào)用它的任意方法和屬性;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為java語言的反射機(jī)制。
簡單使用
反射,在java中是非常常見和好用的一種方式,(但是大家需要知道,他的效率是比較低的,所以要慎用)當(dāng)然在基于java語言而產(chǎn)生的Android中也是可以使用的,我們可以使用反射來獲取一些系統(tǒng)并不開放,但是存在的類,從而調(diào)用他的一些方法,下面就簡單的寫一下,利用java反射來獲取類和調(diào)用它的方法的實(shí)現(xiàn)。
//需要被反射調(diào)用的類的路徑
String className = "com.example.test.JavaReflect";Class reflect = null;
try {
//通過路徑來獲取java類
reflect = Class.forName(className);
//實(shí)例化對應(yīng)得類
Object javaReflect = reflect.newInstance();
if(null != javaReflect) {
//反射出該Class類中的stringToUp()方法 stringToUp是方法名,String.class是參數(shù)類型
Method stringToUp = reflect.getDeclaredMethod("stringToUp", String.class);
//取消訪問私有方法的合法性檢查
stringToUp.setAccessible(true);
//調(diào)用stringToUp()方法,第一個(gè)參數(shù)表示對應(yīng)的類,第二個(gè)是方法的參數(shù)
String str = (String) stringToUp.invoke(javaReflect,"java reflect test");
System.out.println("result:"+str);
}
}catch (Exception e) {
e.printStackTrace();
}
我們來看一下,在stringToUp里面做了什么:
public String stringToUp(String str){
return str.toUpperCase();
}
其實(shí)就是一個(gè)對字符串轉(zhuǎn)換成大寫,然返回,好了我們來看一下輸出結(jié)果:
01-02 08:09:11.959 6150-6150/com.zxf.alpha I/System.out: result:JAVA REFLECT TEST
簡直就是完美。
總結(jié)
好了,以上就是這篇文章的全部內(nèi)容了,反射在Android中的應(yīng)用范圍也很多,比如我們項(xiàng)目有多個(gè)module的時(shí)候,你想在module里面調(diào)用主的程序的一個(gè)方法你就可以這么干,也可以用反射來調(diào)用一些系統(tǒng)為公開的方法,但是效率不太高。希望本文的內(nèi)容對大家學(xué)習(xí)或者使用Java中的放射能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
IDEA配置JRebel實(shí)現(xiàn)熱部署的方法
這篇文章主要介紹了IDEA配置JRebel實(shí)現(xiàn)熱部署的方法,本文給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離
這篇文章主要介紹了Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離的示例,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下2020-11-11
Java查詢時(shí)間段(startTime--endTime)間的數(shù)據(jù)方式
這篇文章主要介紹了Java查詢時(shí)間段(startTime--endTime)間的數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實(shí)現(xiàn)
這篇文章主要介紹了Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Spring JPA學(xué)習(xí)之delete方法示例詳解
這篇文章主要為大家介紹了Spring JPA學(xué)習(xí)delete方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

