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
广告

© . All rights reserved.