該方法采用反射創建對象,並進行賦值,將List<T>,中含有BigDecimal字段的值求和,並賦值到新的對象中對應的字段上。
代碼如下:
@SneakyThrows public static <T> T convertListValueToObjectValue(List responses, Class<T> clazz) { Object object = clazz.newInstance(); Class<?> aClass = object.getClass(); Field[] declaredFields = aClass.getDeclaredFields(); for (Field declaredField : declaredFields) { if ("java.math.BigDecimal".equals(declaredField.getType().getName())) { declaredField.setAccessible(true); for (Object row : responses) { Field[] rowFields = row.getClass().getDeclaredFields(); for (Field rowField : rowFields) { if ("java.math.BigDecimal".equals(rowField.getType().getName()) && rowField.getName().equals(declaredField.getName())) { rowField.setAccessible(true); BigDecimal tem = (BigDecimal) rowField.get(row); BigDecimal dst = (BigDecimal) declaredField.get(object); declaredField.set(object, tem.add(dst)); } } } } } return (T) object; }