温馨提示×

温馨提示×

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

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

如何获取java Field字段

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

在 Java 中,Field(字段/成员变量) 通常通过 反射(Reflection) 来获取。下面从基础到常见用法系统说明。


一、获取 Class 对象(前提)

要先拿到 Class 对象,常见方式:

Class<?> clazz = User.class;
Class<?> clazz2 = user.getClass();
Class<?> clazz3 = Class.forName("com.example.User");

二、获取 Field 的常用方式

1️⃣ 获取 所有 public 字段(包括父类)

Field[] fields = clazz.getFields();

2️⃣ 获取 所有字段(仅当前类,不含父类,包含 private)

Field[] fields = clazz.getDeclaredFields();

3️⃣ 获取 指定 public 字段

Field field = clazz.getField("name");

4️⃣ 获取 指定字段(包括 private)

Field field = clazz.getDeclaredField("age");

三、访问 Field 的值

示例类

public class User {
    public String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

读取字段值

User user = new User("Tom", 18);

Field nameField = User.class.getField("name");
String name = (String) nameField.get(user);

Field ageField = User.class.getDeclaredField("age");
ageField.setAccessible(true); // 私有字段必须设置
int age = ageField.getInt(user);

四、修改 Field 的值

nameField.set(user, "Jack");

ageField.setAccessible(true);
ageField.set(user, 20);

五、Field 常用方法

方法 说明
getName() 字段名
getType() 字段类型
getModifiers() 修饰符
setAccessible(true) 突破 private
get(obj) / set(obj, value) 读写值
getAnnotation(Annotation.class) 获取注解

六、结合注解(常见场景)

Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
    if (field.isAnnotationPresent(Column.class)) {
        Column column = field.getAnnotation(Column.class);
        System.out.println(field.getName() + " -> " + column.value());
    }
}

七、注意事项 ⚠️

  1. private 字段必须 setAccessible(true)
  2. 反射有性能开销
  3. 模块化(Java 9+)可能限制反射访问
  4. 生产环境慎用反射,除非必要(框架、工具类)

如果你有具体需求(如:遍历所有字段、赋值、拷贝对象、ORM 映射、Spring 场景),可以告诉我,我可以给更针对性的示例。

向AI问一下细节

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

AI
助
手