溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java反射機制的講解

發(fā)布時間:2020-10-07 05:27:42 來源:腳本之家 閱讀:138 作者:yangyongUestc 欄目:編程語言

Java中的反射提供了一種運行期獲取對象元信息的手段。即正常方法是通過一個類創(chuàng)建對象,反射方法就是通過一個對象找到一個類的信息。

Java的反射機制的實現要借助于4個類:class,Constructor,Field,Method;

其中class代表的時類對 象,Constructor-類的構造器對象,Field-類的屬性對象,Method-類的方法對象。通過這四個對象我們可以粗略的看到一個類的各個組成部分。

Java反射的作用:

在Java運行時環(huán)境中,對于任意一個類,可以知道這個類有哪些屬性和方法。對于任意一個對象,可以調用它的任意一個方法。這種動態(tài)獲取類的信息以及動態(tài)調用對象的方法的功能來自于Java 語言的反射(Reflection)機制。

Java 反射機制主要提供了以下功能

  • 在運行時判斷任意一個對象所屬的類。
  • 在運行時構造任意一個類的對象。
  • 在運行時判斷任意一個類所具有的成員變量和方法。
  • 在運行時調用任意一個對象的方法。

反射的常用類和函數:Java反射機制的實現要借助于4個類:Class,Constructor,Field,Method;

其中class代表的是類對象,Constructor-類的構造器對象,Field-類的屬性對象,Method-類的方法對象,通過這四個對象我們可以粗略的看到一個類的各個組成部分。其中最核心的就是Class類,它是實現反射的基礎,它包含的方法我們在第一部分已經進行了基本的闡述。應用反射時我們最關心的一般是一個類的構造器、屬性和方法,下面我們主要介紹Class類中針對這三個元素的方法:

1、得到構造器的方法

  • Constructor getConstructor(Class[] params) -- 獲得使用特殊的參數類型的公共構造函數,
  • Constructor[] getConstructors() -- 獲得類的所有公共構造函數
  • Constructor getDeclaredConstructor(Class[] params) -- 獲得使用特定參數類型的構造函數(與接入級別無關)
  • Constructor[] getDeclaredConstructors() -- 獲得類的所有構造函數(與接入級別無關)

2、獲得字段信息的方法

  • Field getField(String name) -- 獲得命名的公共字段
  • Field[] getFields() -- 獲得類的所有公共字段
  • Field getDeclaredField(String name) -- 獲得類聲明的命名的字段
  • Field[] getDeclaredFields() -- 獲得類聲明的所有字段

3、獲得方法信息的方法

  • Method getMethod(String name, Class[] params) -- 使用特定的參數類型,獲得命名的公共方法
  • Method[] getMethods() -- 獲得類的所有公共方法
  • Method getDeclaredMethod(String name, Class[] params) -- 使用特寫的參數類型,獲得類聲明的命名的方法
  • Method[] getDeclaredMethods() -- 獲得類聲明的所有方法

在程序開發(fā)中使用反射并結合屬性文件,可以達到程序代碼與配置文件相分離的目的。如果我們想要得到對象的信息,一般需要“引入需要的‘包.類'的名稱——通過new實例化——取得實例化對象”這樣的過程。使用反射就可以變成“實例化對象——getClass()方法——得到完整的‘包.類'名稱”這樣的過程。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI