if(sysVideoInfo != null) { if(sysVideoInfo.getMonitorRoll() != null) { newSysEquipmentAxisResp.setMonitorRoll(sysVideoInfo.getMonitorRoll()); } if(sysVideoInfo.getMonitorYaw() != null) { newSysEquipmentAxisResp.setMonitorYaw(sysVideoInfo.getMonitorYaw()); } if(sysVideoInfo.getMonitorPitch() != null) { newSysEquipmentAxisResp.setMonitorPitch(sysVideoInfo.getMonitorPitch()); } if(sysVideoInfo.getHeartX() != null) { newSysEquipmentAxisResp.setHeartX(sysVideoInfo.getHeartX()); } if(sysVideoInfo.getHeartY() != null) { newSysEquipmentAxisResp.setHeartY(sysVideoInfo.getHeartY()); } if(sysVideoInfo.getHeartZ() != null) { newSysEquipmentAxisResp.setHeartZ(sysVideoInfo.getHeartZ()); } }优化一下
时间: 2024-03-27 12:40:11 浏览: 8
可以使用对象拷贝的方式来优化这段代码,避免重复的if判断,例如使用BeanUtils.copyProperties方法来将sysVideoInfo的属性拷贝到newSysEquipmentAxisResp中。代码可以简化为:
```
if (sysVideoInfo != null) {
BeanUtils.copyProperties(sysVideoInfo, newSysEquipmentAxisResp);
}
```
这样可以避免重复的if判断,让代码更加简洁易懂。当然,需要注意的是这种方式只适用于属性名相同的情况,如果属性名不同,可以使用其他的属性拷贝工具或手动赋值来实现。
相关问题
for (SysEquipmentAxisResp sysEquipmentAxisResp : sysEquipmentInfos1) { NewSysEquipmentAxisResp newSysEquipmentAxisResp = new NewSysEquipmentAxisResp(); BeanUtils.copyProperties(sysEquipmentAxisResp,newSysEquipmentAxisResp); SysVideoInfo sysVideoInfo = videoInfoMapper.selectByStreamInfoId(newSysEquipmentAxisResp.getStreamInfoId()); newSysEquipmentAxisResp.setMonitorRoll(sysVideoInfo.getMonitorRoll()); newSysEquipmentAxisResp.setMonitorYaw(sysVideoInfo.getMonitorYaw()); newSysEquipmentAxisResp.setMonitorPitch(sysVideoInfo.getMonitorPitch()); newSysEquipmentAxisResp.setHeartX(sysVideoInfo.getHeartX()); newSysEquipmentAxisResp.setHeartY(sysVideoInfo.getHeartY()); newSysEquipmentAxisResp.setHeartZ(sysVideoInfo.getHeartZ()); newSysEquipmentInfos.add(newSysEquipmentAxisResp); }修改下代码,避免空指针
可以先对 `sysEquipmentInfos1` 进行非空判断,避免空指针异常。修改后的代码如下:
```
if (sysEquipmentInfos1 != null) {
for (SysEquipmentAxisResp sysEquipmentAxisResp : sysEquipmentInfos1) {
NewSysEquipmentAxisResp newSysEquipmentAxisResp = new NewSysEquipmentAxisResp();
BeanUtils.copyProperties(sysEquipmentAxisResp, newSysEquipmentAxisResp);
if (newSysEquipmentAxisResp.getStreamInfoId() != null) {
SysVideoInfo sysVideoInfo = videoInfoMapper.selectByStreamInfoId(newSysEquipmentAxisResp.getStreamInfoId());
if (sysVideoInfo != null) {
newSysEquipmentAxisResp.setMonitorRoll(sysVideoInfo.getMonitorRoll());
newSysEquipmentAxisResp.setMonitorYaw(sysVideoInfo.getMonitorYaw());
newSysEquipmentAxisResp.setMonitorPitch(sysVideoInfo.getMonitorPitch());
newSysEquipmentAxisResp.setHeartX(sysVideoInfo.getHeartX());
newSysEquipmentAxisResp.setHeartY(sysVideoInfo.getHeartY());
newSysEquipmentAxisResp.setHeartZ(sysVideoInfo.getHeartZ());
}
}
newSysEquipmentInfos.add(newSysEquipmentAxisResp);
}
}
```
在代码中,我们加入了多个非空判断,避免了出现空指针异常。
优化这段代码 private void showBeanInfo() { if (param != null) { bean = tokenDao.getBeanWithId(String.valueOf(param)); if (bean != null) { if (bean.getName() != null) { binding.edtTokenName.setText(bean.getName()); } if (bean.getTokenType() != null) { binding.tvTokenType.setText(bean.getTokenType()); } if (bean.getParamType() != null) { binding.tvTokenPara.setText(bean.getParamType()); } if (bean.getTokenBeanNew() != null) { if (bean.getTokenBeanNew().getAlgorithm() != null) { binding.tvTokenAlg.setText(bean.getTokenBeanNew().getAlgorithm()); } if (bean.getTokenBeanNew().getDigits() != null) { binding.tvTokenLength.setText(bean.getTokenBeanNew().getDigits() + "位"); } if (bean.getTokenBeanNew().getTimeInterval() != null) { binding.tvTokenPeriod.setText(bean.getTokenBeanNew().getTimeInterval() + "秒"); } } } } }
优化后的代码如下:
```java
private void showBeanInfo() {
if (param != null) {
bean = tokenDao.getBeanWithId(String.valueOf(param));
if (bean != null) {
BeanNew tokenBeanNew = bean.getTokenBeanNew();
if (bean.getName() != null) {
binding.edtTokenName.setText(bean.getName());
}
if (bean.getTokenType() != null) {
binding.tvTokenType.setText(bean.getTokenType());
}
if (bean.getParamType() != null) {
binding.tvTokenPara.setText(bean.getParamType());
}
if (tokenBeanNew != null) {
if (tokenBeanNew.getAlgorithm() != null) {
binding.tvTokenAlg.setText(tokenBeanNew.getAlgorithm());
}
if (tokenBeanNew.getDigits() != null) {
binding.tvTokenLength.setText(tokenBeanNew.getDigits() + "位");
}
if (tokenBeanNew.getTimeInterval() != null) {
binding.tvTokenPeriod.setText(tokenBeanNew.getTimeInterval() + "秒");
}
}
}
}
}
```
优化的改动:
1. 将 `bean.getTokenBeanNew()` 的结果存储在一个局部变量 `tokenBeanNew` 中,以避免多次访问。
2. 将内部的 `if` 条件判断和对应的设置操作进行重新组织,减少了嵌套的层级。
3. 通过直接访问 `tokenBeanNew` 的属性,避免了多次调用 `bean.getTokenBeanNew()`。
4. 对于可能为 `null` 的属性,添加了对应的空指针判断。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)