Java 反射:使用 getFields 和 getDeclaredFields 获取类的字段列表


#Java 反射、泛型与注解#


简介

相同点:

  • 都返回 Field 数组,即 Field[]

不同点:

  • getFields 仅返回 public 作用域的字段。
  • getDeclaredFields 返回所有作用域的字段。

代码示例

示例1

package org.example;

import java.lang.reflect.Field;

public class Main {

    public static class UserInfo {
        private String name01;
        protected String name02;
        String name03;
        public String name04;

        private static String name11;
        protected static String name12;
        static String name13;
        public static String name14;
    }

    public static void main(String[] args) {
        System.out.println("--- getFields 结果 ---");
        for (Field field : UserInfo.class.getFields()) {
            System.out.println(field.getName());
        }

        System.out.println("--- getDeclaredFields 结果 ---");
        for (Field field : UserInfo.class.getDeclaredFields()) {
            System.out.println(field.getName());
        }
    }

}

执行结果:

--- getFields 结果 ---
name04
name14
--- getDeclaredFields 结果 ---
name01
name02
name03
name04
name11
name12
name13
name14

( 本文完 )