温馨提示×

温馨提示×

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

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

java Field字段如何获取

发布时间:2026-10-06 23:02:14 来源:亿速云 阅读:81 作者:小樊 栏目:编程语言

在 Java 中,“获取 Field 字段”通常有以下几种常见场景,我按使用频率和场景给你总结一下。


一、通过反射获取 Field(最常见)

1️⃣ 获取某个类的所有字段

Class<?> clazz = User.class;

// 获取所有 public 字段(包括父类)
Field[] fields = clazz.getFields();

// 获取所有字段(不包括父类,含 private)
Field[] declaredFields = clazz.getDeclaredFields();

2️⃣ 获取指定名称的字段

// 只能获取 public
Field field = clazz.getField("name");

// 可获取 private / protected
Field field = clazz.getDeclaredField("age");

3️⃣ 获取字段的值

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

Field field = User.class.getDeclaredField("age");
field.setAccessible(true); // 如果是 private 必须设置

Object value = field.get(user);
System.out.println(value);

4️⃣ 修改字段的值

field.set(user, 20);

二、获取字段上的注解(非常常见)

Field field = User.class.getDeclaredField("name");

if (field.isAnnotationPresent(Column.class)) {
    Column column = field.getAnnotation(Column.class);
    System.out.println(column.value());
}

三、获取字段类型 / 修饰符

Field field = User.class.getDeclaredField("age");

Class<?> type = field.getType();
int modifiers = field.getModifiers();

System.out.println(type);          // int
System.out.println(Modifier.isPrivate(modifiers));

四、获取父类中的字段

Field field = User.class.getSuperclass().getDeclaredField("id");

五、Spring 中常见获取 Field 的方式

如果你在使用 Spring / MyBatis / Jackson,通常不是手动反射,而是:

  • @Autowired 注入对象
  • 通过 BeanWrapper
  • 通过 ReflectionUtils
ReflectionUtils.doWithFields(User.class, field -> {
    System.out.println(field.getName());
});

六、常见坑提醒 ⚠️

  1. private 字段必须 setAccessible(true)
  2. getField() 只能拿 public
  3. 静态字段 field.get(null)
  4. 反射会影响性能(不要高频调用)

如果你是想问:

  • ✅ MyBatis 怎么映射 Field
  • ✅ Spring 怎么注入 Field
  • ✅ JSON 转对象怎么对应 Field
  • ✅ Field 和 Getter/Setter 的区别

可以告诉我你的具体使用场景,我可以给你更针对性的示例。

向AI问一下细节

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

AI
助
手