從 Java 中的一個類獲取所有已宣告的欄位


java.lang.Class.getDeclaredFields() 方法返回一個欄位物件的陣列。這些欄位物件包括具有公共、私有、受保護和預設訪問許可權的物件,但不包括繼承欄位。

此外,如果類或介面沒有宣告欄位或在 Class 物件中表示基本型別、陣列類或 void,則 getDeclaredFields() 方法返回一個零長度陣列。

以下是一個展示此功能的程式 −

示例

 線上演示

package Test;
import java.lang.reflect.*;
public class Demo {
   int i;
   char c;
   public Demo(int i, char c) {
      this.i = i;
      this.c = c;
   }
   public static void main(String[] args) {
     try {
         Demo obj = new Demo(7, 'A');
         Class c = obj.getClass();
         Field[] fields = c.getDeclaredFields();
         for(int i = 0; i < fields.length; i++) {
           System.out.println("The field is: " + fields[i].toString());
         }
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }
}

輸出

The field is: int Test.Demo.i
The field is: char Test.Demo.c

現在讓我們瞭解以上程式。

在 main() 方法中建立了 Demo 類的物件。然後,陣列 fields[] 儲存使用 getDeclaredFields() 方法獲取到的欄位物件。然後使用一個 for 迴圈顯示欄位。展示此功能的一個程式碼片段如下 −

Demo obj = new Demo(7, 'A');
Class c = obj.getClass();
Field[] fields = c.getDeclaredFields();
for(int i = 0; i < fields.length; i++) {
   System.out.println("The field is: " + fields[i].toString());
}

更新於: 25-Jun-2020

3K+ 瀏覽

啟動你的事業

完成課程,獲得認證

開始
廣告
© . All rights reserved.