java 通过反射修改对象的值

本文介绍如何使用Java反射机制处理订单DTO中的BigDecimal类型字段,当金额为0时将其置空,并确保非零金额保留两位小数。

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

需求大概

我们的业务系统的订单最后生成订货发货单中,需要将里面所有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 去判断每个字段的字段值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值