ArrayList<RouteOperateVO> routeOperateVOS = new ArrayList<>(); try { Example example = Example.builder(RoutePO.class).where(Sqls.custom().andIn("waybillNo", wayBillNos)).build(); List<RoutePO> routePOList = routePOMapper.selectByExample(example); for (RoutePO routePO : routePOList) { if(null != routePO){ RouteOperateVO routeOperateVO = new RouteOperateVO(); BeanUtils.copyProperties(routePO,routeOperateVO); if (null !=routePO.getOriginCountryId()){ routeOperateVO.setOriginCountry(routePO.getOriginCountryId()); } if (null !=routePO.getTargetCountryId()){ routeOperateVO.setTargetCountry(routePO.getTargetCountryId()); } if (null !=routePO.getOriginCountryId()){ routeOperateVO.setOccurCountry(routePO.getOccurCountryId()); } if (null != routePO.getRouteType()){ routeOperateVO.setRouteTypeDesc(RouteTypeEnum.fromType(routePO.getRouteType()).getDesc()); } if (StringUtils.isNotBlank(routePO.getOperateBy())){ CommonResponse<UserBO> commonResponse = userServiceFeign.selectUserInfoByUserId(Integer.parseInt(routePO.getOperateBy())); if (commonResponse.isSuccess()){ UserBO userBO = commonResponse.getData(); routeOperateVO.setOperatorName(userBO.getEnName() == null ?userBO.getCnName() :userBO.getEnName()); } } routeOperateVOS.add(routeOperateVO); } } } catch (Exception e) { log.error("查询数据库异常:{}", e); } return routeOperateVOS; 分析这段代码可能出现的空指针异常
时间: 2024-02-14 16:35:55 浏览: 22
这段代码可能出现空指针异常的情况有以下几种:
1. 当wayBillNos为null时,在andIn("waybillNo", wayBillNos)方法中会抛出空指针异常。
2. 在for循环中,如果routePOList中有为null的元素,会抛出空指针异常。
3. 在BeanUtils.copyProperties(routePO,routeOperateVO)中,如果routePO为null,会抛出空指针异常。
4. 在setOriginCountry、setTargetCountry、setOccurCountry、setRouteTypeDesc、setOperatorName方法中,如果参数为null,会抛出空指针异常。
5. 在userServiceFeign.selectUserInfoByUserId方法中,如果传入的参数为null或空字符串,会抛出空指针异常。
综上所述,这段代码可能出现的空指针异常需要注意以上几种情况。
相关问题
JAVA中ArrayList<Integer> arrayList=new ArrayList<>()和List<String>list=new ArrayList<>()的区别
`ArrayList<Integer> arrayList=new ArrayList<>()` 和 `List<String> list=new ArrayList<>()` 的区别在于声明的泛型类型不同。
`ArrayList<Integer>` 声明了一个 `ArrayList` 对象,泛型类型为 `Integer`。这意味着这个 `ArrayList` 只能存储 `Integer` 类型的数据。
`List<String> list=new ArrayList<>()` 声明了一个 `List` 对象,泛型类型为 `String`。这意味着这个 `List` 可以存储任何 `String` 类型的数据,包括 `String` 类型的子类。
另外,需要注意的是,`List` 是一个接口,而 `ArrayList` 是 `List` 接口的一个实现类。因此,`ArrayList` 是 `List` 的一种特殊形式,可以使用 `List` 接口中的所有方法,同时也可以使用 `ArrayList` 自己的方法。
ArrayList<Object> list = new ArrayList<Integer>(??);
在这种情况下,您不能直接将一个 ArrayList<Integer> 赋值给 ArrayList<Object>,因为它们之间没有直接的继承关系。但是,您可以使用通配符来实现一些灵活性,如下所示:
```
ArrayList<? extends Object> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
```
或者,您可以使用 ArrayList 的构造函数将 Integer 转换为 Object,如下所示:
```
ArrayList<Object> list = new ArrayList<Object>(Arrays.asList((Object)1, (Object)2, (Object)3));
```
这里使用了强制类型转换将 Integer 转换为 Object 类型。注意,这种方法可能会导致运行时类型转换异常,因此需要谨慎使用。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)