写在最前面的总结
当不能够明确赋值给对象的哪一个属性,通过反射来进行赋值,在工作中也是比较常见的,有记录的必要。
首先是一个实体类,Curve
@Data
public class Curve {
private int dataValue1; // 第一个点
private int dataValue2; // 第二个点
private int dataValue2; // 第三个点
}
然后是一个方法,assignment
private Object assignment(Curve curve1, Curve curve2, int n) {
// 给曲线1的第一个点赋值1,第二个点赋值2,第三个点赋值3
for(int i = 1; i <= 3; i++) {
String propertyName1 = "dataValue" + i; // 动态组装属性名
Field field1 = curve1.getClass().getDeclaredField(propertyName1); // 得到指定属性
field1.setAccessible(true); // 访问权限
field1.set(curve1, i); // 赋值
}
// 得到曲线2的第n个点
String propertyName2 = "dataValue" + n;
Field field2 = curve2.getClass().getDeclaredField(propertyName2); // 得到指定属性
field2.setAccessible(true); // 访问权限
Object result = field2.get(curve2); // 取值
return result;
}