java 访问类私有变量

1. 现在我们有类A(class A)及类B(class B),需要将类A指定的字段(List<String> fields)值赋给类B同样的字段,这些字段都是类的私有字段
2. 实现方法如下:
A a = new A()
B b = new B(); // 创建B类实例,用于接收值
Class aClass = A.class;
Class bClass = B.class;
fields.forEach(field -> {
try {
Field afield = aClass.getDeclaredField(field); //获取A类的field
Field bfield = bClass.getDeclaredField(field); //获取B类的field
bfield.setAccessible(true); //由于是private的,因此设置为可访问才能获取值
afield.setAccessible(true); //由于是private的,因此设置为可访问才能设置值
afield.set(b, bfield.get(a)); //将a的field值赋给b
} catch (Exception e) {
e.printStackTrace();
}
});

参考:

Java Reflection - Private Fields and Methods

posted on 2020-12-07 15:42  生活费  阅读(827)  评论(0编辑  收藏  举报

导航