在 Java 中,读取 Field(字段)值通常是通过 反射(Reflection) 实现的。下面从常见场景给你说明。
public class User {
private String name;
public int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) throws Exception {
User user = new User("Tom", 18);
// 获取 public 字段
Field ageField = User.class.getField("age");
int age = (int) ageField.get(user);
System.out.println(age);
// 获取 private 字段
Field nameField = User.class.getDeclaredField("name");
nameField.setAccessible(true); // 关键:允许访问私有字段
String name = (String) nameField.get(user);
System.out.println(name);
}
}
| 方法 | 说明 |
|---|---|
getField(name) |
获取 public 字段(包括继承的) |
getDeclaredField(name) |
获取 本类声明 的字段(含 private) |
setAccessible(true) |
跳过访问权限检查 |
get(obj) |
读取对象该字段的值 |
getStatic(obj) / get(null) |
读取静态字段 |
public class Config {
public static String VERSION = "1.0";
}
Field field = Config.class.getField("VERSION");
String version = (String) field.get(null);
for (Field field : User.class.getDeclaredFields()) {
field.setAccessible(true);
System.out.println(field.getName() + " = " + field.get(user));
}
get() 返回 Object,需要强转ReflectionUtils如果你有具体使用场景(如 Spring、注解、工具类、性能要求),可以告诉我,我给你更合适的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。