java 通过反射修改对象的值

通过反射修改类的相关属性值等

需求大概

我们的业务系统的订单最后生成订货发货单中,需要将里面所有BigDecimal 类型的值 做特殊处理
金额为 0 就做空 不为零要保留小数等等

代码实现

		//获取class对象
		Class<? extends OrderDTO> order= orderDTO.getClass();
		Field[] declaredFields = order.getDeclaredFields();
		// 解析遍历所有字段属性
		for (Field field : declaredFields) {
			field.setAccessible(true);
			Object value = field.get(orderDTO);
			if (!Objects.isNull(value)&& field.getType().equals(BigDecimal.class)){
				//若字段值不为空 则继续下一步操作
				BigDecimal bigDecimal = (BigDecimal)value;
				//保留两位小数
				BigDecimal zero = BigDecimal.ZERO.setScale(2);
				//有相关价格为空时
				if (zero.equals(bigDecimal)){
					field.set(orderDTO,null);
				}
			}else if (!Objects.isNull(value) && "0".equals(value.toString())){
				field.set(orderDTO,null);
			}else if (!Objects.isNull(value) && "0.00".equals(value.toString())){
				field.set(orderDTO,null);
			}
		}

通过filed.set()方法设置需要修改的业务值
这样就不需要使用大量的重复代码 if 去判断每个字段的字段值


版权声明:本文为zeker66原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。