Java反射機制的講解
Java中的反射提供了一種運行期獲取對象元信息的手段。即正常方法是通過一個類創(chuàng)建對象,反射方法就是通過一個對象找到一個類的信息。
Java的反射機制的實現(xiàn)要借助于4個類:class,Constructor,F(xiàn)ield,Method;
其中class代表的時類對 象,Constructor-類的構造器對象,F(xiàn)ield-類的屬性對象,Method-類的方法對象。通過這四個對象我們可以粗略的看到一個類的各個組成部分。
Java反射的作用:
在Java運行時環(huán)境中,對于任意一個類,可以知道這個類有哪些屬性和方法。對于任意一個對象,可以調(diào)用它的任意一個方法。這種動態(tài)獲取類的信息以及動態(tài)調(diào)用對象的方法的功能來自于Java 語言的反射(Reflection)機制。
Java 反射機制主要提供了以下功能
- 在運行時判斷任意一個對象所屬的類。
- 在運行時構造任意一個類的對象。
- 在運行時判斷任意一個類所具有的成員變量和方法。
- 在運行時調(diào)用任意一個對象的方法。
反射的常用類和函數(shù):Java反射機制的實現(xiàn)要借助于4個類:Class,Constructor,F(xiàn)ield,Method;
其中class代表的是類對象,Constructor-類的構造器對象,F(xiàn)ield-類的屬性對象,Method-類的方法對象,通過這四個對象我們可以粗略的看到一個類的各個組成部分。其中最核心的就是Class類,它是實現(xiàn)反射的基礎,它包含的方法我們在第一部分已經(jīng)進行了基本的闡述。應用反射時我們最關心的一般是一個類的構造器、屬性和方法,下面我們主要介紹Class類中針對這三個元素的方法:
1、得到構造器的方法
- Constructor getConstructor(Class[] params) -- 獲得使用特殊的參數(shù)類型的公共構造函數(shù),
- Constructor[] getConstructors() -- 獲得類的所有公共構造函數(shù)
- Constructor getDeclaredConstructor(Class[] params) -- 獲得使用特定參數(shù)類型的構造函數(shù)(與接入級別無關)
- Constructor[] getDeclaredConstructors() -- 獲得類的所有構造函數(shù)(與接入級別無關)
2、獲得字段信息的方法
- Field getField(String name) -- 獲得命名的公共字段
- Field[] getFields() -- 獲得類的所有公共字段
- Field getDeclaredField(String name) -- 獲得類聲明的命名的字段
- Field[] getDeclaredFields() -- 獲得類聲明的所有字段
3、獲得方法信息的方法
- Method getMethod(String name, Class[] params) -- 使用特定的參數(shù)類型,獲得命名的公共方法
- Method[] getMethods() -- 獲得類的所有公共方法
- Method getDeclaredMethod(String name, Class[] params) -- 使用特寫的參數(shù)類型,獲得類聲明的命名的方法
- Method[] getDeclaredMethods() -- 獲得類聲明的所有方法
在程序開發(fā)中使用反射并結合屬性文件,可以達到程序代碼與配置文件相分離的目的。如果我們想要得到對象的信息,一般需要“引入需要的‘包.類'的名稱——通過new實例化——取得實例化對象”這樣的過程。使用反射就可以變成“實例化對象——getClass()方法——得到完整的‘包.類'名稱”這樣的過程。
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
相關文章
Mybatis中and和循環(huán)or混用操作(or轉換成in)
這篇文章主要介紹了Mybatis中and和循環(huán)or混用操作(or轉換成in),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Springboot整合ActiveMQ實現(xiàn)消息隊列的過程淺析
昨天仔細研究了activeMQ消息隊列,也遇到了些坑,下面這篇文章主要給大家介紹了關于SpringBoot整合ActiveMQ的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-02-02
詳解SpringBoot配置devtools實現(xiàn)熱部署
本篇文章主要介紹了詳解SpringBoot配置devtools實現(xiàn)熱部署 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
springboot集成RestTemplate及常見的用法說明
這篇文章主要介紹了springboot集成RestTemplate及常見的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Java判斷文件或者文件夾是否存在的功能(不存在創(chuàng)建,存在刪除)
在Java中,要判斷文件或文件夾是否存在,并根據(jù)判斷結果來執(zhí)行創(chuàng)建或刪除操作,你可以使用java.io.File類或者java.nio.file包中的類,本文介紹Java判斷文件或者文件夾是否存在,不存在創(chuàng)建,存在刪除,感興趣的朋友一起看看吧2025-03-03
詳解SpringBoot靜態(tài)方法獲取bean的三種方式
本文主要介紹了詳解SpringBoot靜態(tài)方法獲取bean的三種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
SpringBoot如何整合mybatis-generator-maven-plugin 1.4.0
這篇文章主要介紹了SpringBoot整合mybatis-generator-maven-plugin 1.4.0的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-01-01

