温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么获取java Field列表

发布时间:2026-09-16 05:26:01 来源:亿速云 阅读:102 作者:小樊 栏目:编程语言

在 Java 中,获取 Field(字段)列表 通常是通过 反射(Reflection) 来实现的。下面按常见场景给你总结一下。


一、获取当前类声明的字段(不包含父类)

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) {
        Field[] fields = MyClass.class.getDeclaredFields();
        for (Field field : fields) {
            System.out.println(field.getName());
        }
    }
}

✅ getDeclaredFields()

  • 包含:private / protected / public
  • 不包含:父类字段

二、获取所有 public 字段(包含父类)

Field[] fields = MyClass.class.getFields();

✅ getFields()

  • 只包含 public
  • 包含:父类的 public 字段

三、获取当前类 + 所有父类的字段(常用)

Class<?> clazz = MyClass.class;
while (clazz != null) {
    Field[] fields = clazz.getDeclaredFields();
    for (Field field : fields) {
        System.out.println(clazz.getSimpleName() + "." + field.getName());
    }
    clazz = clazz.getSuperclass();
}

四、过滤字段(例如只看 private)

for (Field field : MyClass.class.getDeclaredFields()) {
    if (Modifier.isPrivate(field.getModifiers())) {
        System.out.println(field.getName());
    }
}

五、获取字段值(反射访问)

MyClass obj = new MyClass();
Field field = MyClass.class.getDeclaredField("name");
field.setAccessible(true); // 突破 private
Object value = field.get(obj);

六、常见注意点

  1. 私有字段必须 setAccessible(true)
  2. 反射有性能开销,不宜高频调用
  3. 模块化(Java 9+)可能限制反射访问

如果你有具体需求,比如:

  • 获取某个注解的字段
  • 排除 static / final
  • Spring / Hibernate 场景

可以告诉我,我给你更针对性的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手