在 Java 中,**通过反射(Reflection)获取字段(Field)**通常使用 java.lang.reflect.Field 和 Class 类。下面按常见场景给你说明。
Class<?> clazz = MyClass.class;
// 或
Class<?> clazz = obj.getClass();
// 或
Class<?> clazz = Class.forName("com.example.MyClass");
Field field = clazz.getDeclaredField("name");
getDeclaredField可以获取本类中所有字段(不含父类)
Field[] fields = clazz.getDeclaredFields();
Field field = clazz.getField("age");
Field[] fields = clazz.getFields();
field.setAccessible(true);
Object value = field.get(obj);
field.set(obj, "新值");
class User {
private String name;
public int age;
}
public class Test {
public static void main(String[] args) throws Exception {
User user = new User();
Class<?> clazz = user.getClass();
// 获取私有字段
Field nameField = clazz.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(user, "张三");
// 获取公开字段
Field ageField = clazz.getField("age");
ageField.set(user, 18);
System.out.println(nameField.get(user));
System.out.println(ageField.get(user));
}
}
setAccessible(true)如果你指的是 Android / Kotlin / 某个具体框架(如 Spring),可以告诉我,我可以给更针对性的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。