Java Field字段是什么
在 Java 中,Field(字段)通常指的是类或接口中定义的成员变量,也就是属性。它是 Java 反射(Reflection)体系中的一个重要概念。
一、什么是 Field(字段)
**Field(字段)**包括:
- 成员变量(实例变量)
- 静态变量(static)
- 常量(final)
例如:
class Person {
private String name; // 实例字段
public int age; // 实例字段
public static String type = "Human"; // 静态字段
}
这里的 name、age、type 都是 Field。
二、Field 在 Java 反射中的含义
在 java.lang.reflect.Field 类中,Field 代表类中的一个属性,可以用来:
- 获取字段的信息(名称、类型、修饰符)
- 读取字段的值
- 修改字段的值(包括 private 字段)
三、通过反射获取 Field
1️⃣ 获取 Class 对象
Class> clazz = Person.class;
2️⃣ 获取字段
Field field = clazz.getDeclaredField("name");
常用方法:
| 方法 | 说明 |
|---|---|
getField(name) |
获取 public 字段(含父类) |
getDeclaredField(name) |
获取本类声明的字段(含 private) |
getFields() |
获取所有 public 字段 |
getDeclaredFields() |
获取本类所有字段 |
四、Field 的常见操作
1️⃣ 获取字段信息
Field field = Person.class.getDeclaredField("name");
System.out.println(field.getName()); // name
System.out.println(field.getType()); // class java.lang.String
System.out.println(Modifier.toString(field.getModifiers())); // private
2️⃣ 读取字段值
Person p = new Person();
p.name = "Tom";
Field field = Person.class.getDeclaredField("name");
field.setAccessible(true); // 解除 private 限制
Object value = field.get(p);
System.out.println(value); // Tom
3️⃣ 修改字段值
Field field = Person.class.getDeclaredField("name");
field.setAccessible(true);
field.set(p, "Jerry");
五、Field 与成员变量、属性的区别
| 概念 | 说明 |
|---|---|
| 成员变量 | 类中的变量(广义) |
| Field | 反射层面的成员变量 |
| 属性(Property) | 通常指 getter/setter 对应的字段(JavaBean 概念) |
⚠️ 注意:
Java 本身没有“属性”这个关键字,属性是 JavaBean 规范中的概念。
六、Field 的典型使用场景
- 框架开发(Spring、MyBatis)
- 注解处理
- 序列化 / 反序列化
- 对象拷贝、对象工具类
- 动态修改对象状态
七、简单总结
✅ Field 就是类中的变量
✅ 在反射中,Field 是一个对象,用来描述字段
✅ 可以读取、修改字段,甚至访问 private 字段
如果你愿意,我也可以讲:
- Field + 注解的实际案例
- Field 和 Spring 注入的关系
- Field 和 get/set 方法的区别 ✅