Java 類 getDeclaredFields() 方法



描述

Java 類 getDeclaredFields() 方法返回一個 Field 物件陣列,包括公有、受保護、預設(包)訪問和私有欄位,但不包括繼承的欄位。如果類或介面沒有宣告任何欄位,或者此 Class 物件表示基本型別、陣列類或 void,則該方法返回長度為 0 的陣列。

宣告

以下是 java.lang.Class.getDeclaredFields() 方法的宣告

public Field[] getDeclaredFields() throws SecurityException

引數

返回值

此方法返回一個 Field 物件陣列,表示該類的所有宣告欄位。

異常

SecurityException − 如果存在安全管理器 s。

獲取類宣告欄位的示例

以下示例演示了 java.lang.Class.getDeclaredFields() 方法的用法。在此程式中,我們建立了一個 ClassDemo 的例項,然後使用 getClass() 方法獲取例項的類。使用 getDeclaredFields(),我們檢索了所有宣告的欄位並列印它們。

package com.tutorialspoint;

import java.lang.reflect.Field;

public class ClassDemo {

   public static void main(String[] args) {

      try {            
         ClassDemo c = new ClassDemo();
         Class cls = c.getClass();
       
         // returns the array of Field objects
         Field[] fields = cls.getDeclaredFields();
         for(int i = 0; i < fields.length; i++) {
            System.out.println("Field = " + fields[i].toString());
         }
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }

   public ClassDemo() {
      // no argument constructor
   }

   public ClassDemo(long l, int i) {
      this.l = l;
      this.i = i;
   }

   long l = 77688;
   int i = 3;
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Field = long com.tutorialspoint.ClassDemo.l
Field = int com.tutorialspoint.ClassDemo.i

獲取 ArrayList 類宣告欄位的示例

以下示例演示了 java.lang.Class.getDeclaredFields() 方法的用法。在此程式中,我們使用了 ArrayList 的類。使用 getDeclaredFields(),我們檢索了所有宣告的欄位並列印它們。

package com.tutorialspoint;

import java.lang.reflect.Field;

public class ClassDemo {

   public static void main(String[] args) {

      try {
         Class cls = ArrayList.class;
       
         // returns the array of Field objects
         Field[] fields = cls.getDeclaredFields();
         for(int i = 0; i < fields.length; i++) {
            System.out.println("Field = " + fields[i].toString());
         }
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Field = private static final long java.util.ArrayList.serialVersionUID
Field = private static final int java.util.ArrayList.DEFAULT_CAPACITY
Field = private static final java.lang.Object[] java.util.ArrayList.EMPTY_ELEMENTDATA
Field = private static final java.lang.Object[] java.util.ArrayList.DEFAULTCAPACITY_EMPTY_ELEMENTDATA
Field = transient java.lang.Object[] java.util.ArrayList.elementData
Field = private int java.util.ArrayList.size

獲取 Thread 類宣告欄位的示例

以下示例演示了 java.lang.Class.getDeclaredFields() 方法的用法。在此程式中,我們使用了 Thread 的類。使用 getDeclaredFields(),我們檢索了所有宣告的欄位並列印它們。

package com.tutorialspoint;

import java.lang.reflect.Field;

public class ClassDemo {

   public static void main(String[] args) {

      try {
         Class cls = Thread.class;
       
         // returns the array of Field objects
         Field[] fields = cls.getDeclaredFields();
         for(int i = 0; i < fields.length; i++) {
            System.out.println("Field = " + fields[i].toString());
         }
      } catch(Exception e) {
         System.out.println(e.toString());
      }
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

Field = private volatile long java.lang.Thread.eetop
Field = private final long java.lang.Thread.tid
Field = private volatile java.lang.String java.lang.Thread.name
Field = volatile boolean java.lang.Thread.interrupted
Field = private volatile java.lang.ClassLoader java.lang.Thread.contextClassLoader
Field = private java.security.AccessControlContext java.lang.Thread.inheritedAccessControlContext
Field = private final java.lang.Thread$FieldHolder java.lang.Thread.holder
Field = java.lang.ThreadLocal$ThreadLocalMap java.lang.Thread.threadLocals
Field = java.lang.ThreadLocal$ThreadLocalMap java.lang.Thread.inheritableThreadLocals
Field = private java.lang.Object java.lang.Thread.scopedValueBindings
Field = private static final java.lang.Object java.lang.Thread.NEW_THREAD_BINDINGS
Field = final java.lang.Object java.lang.Thread.interruptLock
Field = private volatile java.lang.Object java.lang.Thread.parkBlocker
Field = volatile sun.nio.ch.Interruptible java.lang.Thread.nioBlocker
Field = public static final int java.lang.Thread.MIN_PRIORITY
Field = public static final int java.lang.Thread.NORM_PRIORITY
Field = public static final int java.lang.Thread.MAX_PRIORITY
Field = private jdk.internal.vm.Continuation java.lang.Thread.cont
Field = static final int java.lang.Thread.NO_INHERIT_THREAD_LOCALS
Field = private static final java.lang.StackTraceElement[] java.lang.Thread.EMPTY_STACK_TRACE
Field = private volatile java.lang.Thread$UncaughtExceptionHandler java.lang.Thread.uncaughtExceptionHandler
Field = private static volatile java.lang.Thread$UncaughtExceptionHandler java.lang.Thread.defaultUncaughtExceptionHandler
Field = long java.lang.Thread.threadLocalRandomSeed
Field = int java.lang.Thread.threadLocalRandomProbe
Field = int java.lang.Thread.threadLocalRandomSecondarySeed
Field = private jdk.internal.vm.ThreadContainer java.lang.Thread.container
Field = private volatile jdk.internal.vm.StackableScope java.lang.Thread.headStackableScopes
java_lang_class.htm
廣告