new bigdecimal(null)
时间: 2023-04-27 08:06:03 浏览: 358
你想问的问题是什么?
我不太懂你的意思,你能给我一个更具体的问题吗?在Java中,创建一个新的BigDecimal对象时,必须传递一个参数。如果你传递null作为参数,会抛出NullPointerException异常。
以下是创建一个BigDecimal对象并将其初始化为null的示例代码:
```
BigDecimal decimal = null;
```
如果你想要创建一个BigDecimal对象并将其初始化为0,可以使用以下代码:
```
BigDecimal decimal = new BigDecimal(0);
```
相关问题
BigDecimal actMoney = billMaster.getBillActMoney(); needCharge = Objects.isNull(actMoney)?new BigDecimal("0"):actMoney.subtract(hasCharge); if(needCharge.compareTo(new BigDecimal("0")) == -1){ needCharge = new BigDecimal("0"); } billMaster.setHasChargeMoney(hasCharge); billMaster.setNeedChargeMoney(needCharge);如何优化这段代码
这段代码可以进行如下优化:
1. 对于BigDecimal类型的比较,可以使用BigDecimal.ZERO代替new BigDecimal("0"),这样可以避免创建一个BigDecimal对象。
2. 可以使用Optional类来简化代码,避免使用Objects类进行判空处理。
3. 对于BigDecimal类型的运算,可以使用BigDecimal的subtract方法来实现减法运算,而不是使用加法运算符和负数进行计算。
4. 在进行BigDecimal类型的比较时,可以使用compareTo方法的返回值来进行比较,避免使用等于、大于、小于等运算符。
优化后的代码如下:
```
BigDecimal actMoney = billMaster.getBillActMoney();
BigDecimal needCharge = actMoney == null ? BigDecimal.ZERO : actMoney.subtract(hasCharge);
needCharge = needCharge.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : needCharge;
billMaster.setHasChargeMoney(hasCharge);
billMaster.setNeedChargeMoney(needCharge);
```
通过这些优化,可以使代码更加简洁、高效、易读。
xwAttr.setAttrId(new BigDecimal(reqVo.getAttrId())); xwAttr.setBusiTypeId(Optional.ofNullable(reqVo.getBusiTypeId()).map(BigDecimal::new).orElse(null)); xwAttr.setParAttrId(Optional.ofNullable(reqVo.getParAttrId()).map(BigDecimal::new).orElse(null)); xwAttr.setAttrNbr(reqVo.getAttrNbr()); xwAttr.setAttrName(reqVo.getAttrName()); xwAttr.setAttrDesc(reqVo.getAttrDesc()); xwAttr.setDefaultValue(reqVo.getDefaultValue()); xwAttr.setValueFrom(reqVo.getValueFrom()); xwAttr.setValueTo(reqVo.getValueTo()); xwAttr.setIsUnique(new BigDecimal(reqVo.getIsUnique())); xwAttr.setIsNullable(new BigDecimal(reqVo.getIsNullable())); xwAttr.setAttrValueDataType(reqVo.getAttrValueDataType()); xwAttr.setIsDanyAttr(new BigDecimal(reqVo.getIsDanyAttr())); xwAttr.setAttrValueType(reqVo.getAttrValueType()); xwAttr.setAttrFormat(reqVo.getAttrFormat()); xwAttr.setAttrLength(new BigDecimal(reqVo.getAttrLength())); xwAttr.setStatusCd(reqVo.getStatusCd()); xwAttr.setUpdateStaff(new BigDecimal(reqVo.getUpdateStaff())); xwAttr.setStatusDate(new Date()); xwAttr.setUpdateDate(new Date()); xwAttr.setRemark(reqVo.getRemark()); xwAttr.setUnitCd(new BigDecimal(reqVo.getUnitCd())); xwAttr.setExtAttrId(reqVo.getExtAttrId()); xwAttr.setGrpAttrNbr(reqVo.getGrpAttrNbr()); xwAttr.setShowFlag(new BigDecimal(reqVo.getShowFlag())); xwAttr.setModFlag(new BigDecimal(reqVo.getModFlag())); xwAttr.setFormatMsg(reqVo.getFormatMsg()); xwAttr.setHasLinkCtrl(reqVo.getHasLinkCtrl()); xwAttr.setPrivCode(reqVo.getPrivCode()); xwAttr.setBusiObjNbr(reqVo.getBusiObjNbr());将reqVo中获取的属性全判空后再放入xwAttr
你可以使用 Java 8 的 Optional 类和流式操作来简化这段代码。可以通过创建一个方法来处理属性的判空和转换,并使用流式操作将所有属性进行处理。以下是简化后的代码示例:
```java
private BigDecimal getBigDecimalValue(String value) {
return Optional.ofNullable(value)
.map(BigDecimal::new)
.orElse(null);
}
// ...
xwAttr.setAttrId(getBigDecimalValue(reqVo.getAttrId()));
xwAttr.setBusiTypeId(getBigDecimalValue(reqVo.getBusiTypeId()));
xwAttr.setParAttrId(getBigDecimalValue(reqVo.getParAttrId()));
xwAttr.setAttrNbr(reqVo.getAttrNbr());
xwAttr.setAttrName(reqVo.getAttrName());
xwAttr.setAttrDesc(reqVo.getAttrDesc());
xwAttr.setDefaultValue(reqVo.getDefaultValue());
xwAttr.setValueFrom(reqVo.getValueFrom());
xwAttr.setValueTo(reqVo.getValueTo());
xwAttr.setIsUnique(getBigDecimalValue(reqVo.getIsUnique()));
xwAttr.setIsNullable(getBigDecimalValue(reqVo.getIsNullable()));
xwAttr.setAttrValueDataType(reqVo.getAttrValueDataType());
xwAttr.setIsDanyAttr(getBigDecimalValue(reqVo.getIsDanyAttr()));
xwAttr.setAttrValueType(reqVo.getAttrValueType());
xwAttr.setAttrFormat(reqVo.getAttrFormat());
xwAttr.setAttrLength(getBigDecimalValue(reqVo.getAttrLength()));
xwAttr.setStatusCd(reqVo.getStatusCd());
xwAttr.setUpdateStaff(getBigDecimalValue(reqVo.getUpdateStaff()));
xwAttr.setStatusDate(new Date());
xwAttr.setUpdateDate(new Date());
xwAttr.setRemark(reqVo.getRemark());
xwAttr.setUnitCd(getBigDecimalValue(reqVo.getUnitCd()));
xwAttr.setExtAttrId(reqVo.getExtAttrId());
xwAttr.setGrpAttrNbr(reqVo.getGrpAttrNbr());
xwAttr.setShowFlag(getBigDecimalValue(reqVo.getShowFlag()));
xwAttr.setModFlag(getBigDecimalValue(reqVo.getModFlag()));
xwAttr.setFormatMsg(reqVo.getFormatMsg());
xwAttr.setHasLinkCtrl(reqVo.getHasLinkCtrl());
xwAttr.setPrivCode(reqVo.getPrivCode());
xwAttr.setBusiObjNbr(reqVo.getBusiObjNbr());
```
通过使用 `getBigDecimalValue` 方法,可以将属性的判空和转换逻辑封装起来,避免了重复的代码。然后,将所有属性通过流式操作一一处理,使代码更加简洁和易读。
阅读全文