return pmModelClient = Optional.ofNullable(pmModelClient).orElseGet(this::initPmModelClient);
时间: 2024-06-06 15:05:18 浏览: 6
这是一个使用 Java 8 的 Optional 类的示例代码。它的作用是对一个可能为 null 的对象进行空值判断,并在为空时通过一个函数来创建一个新的对象。具体来说,这行代码的意思是:
- 如果 pmModelClient 不为 null,则返回 pmModelClient。
- 如果 pmModelClient 为 null,则调用 this::initPmModelClient 方法来创建一个新的 pmModelClient 对象,并将其包装成 Optional 对象返回。
其中,orElseGet 方法是当 Optional 对象为 null 时,执行传入的 Supplier 函数来获取一个新的对象。而 initPmModelClient 方法则是一个自定义的方法,用于创建 pmModelClient 对象。
相关问题
检查并修改下面代码:@Override public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) { List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId); if(CollectionUtil.isEmpty(taskTaskList)){ return Collections.emptyList(); } List<ProjectCountVO> result = new ArrayList<>(); Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId)); for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) { projectId = projectTaskEntry.getKey(); ProjectCountVO projectCountVO = new ProjectCountVO(); projectCountVO.setId(projectId); //查询项目名称 String projectName = Optional.ofNullable(applicationServicePlatformClientProxy.queryProjectName(projectId)); projectCountVO.setName(projectName); List<TaskTask> taskList = projectTaskEntry.getValue(); projectCountVO.setTaskCount(taskList.size()); Integer problemCount = CollectionUtil.isEmpty(taskList) ? 0 : taskList.stream().collect(Collectors.summingInt(task-> Optional.ofNullable(task.getProblemNum()).orElse(0))); projectCountVO.setProblemCount(problemCount); result.add(projectCountVO); } return result; }
@Override
public List<ProjectCountVO> projectCount(String beginTime, String endTime, Integer forceType, String projectId) {
List<TaskTask> taskTaskList = this.listStatisticsTask(beginTime, endTime, forceType, projectId);
if (CollectionUtil.isEmpty(taskTaskList)) {
return Collections.emptyList();
}
List<ProjectCountVO> result = new ArrayList<>();
Map<String, List<TaskTask>> projectTaskMap = taskTaskList.stream().collect(Collectors.groupingBy(TaskTask::getProjectId));
for (Map.Entry<String, List<TaskTask>> projectTaskEntry : projectTaskMap.entrySet()) {
projectId = projectTaskEntry.getKey();
ProjectCountVO projectCountVO = new ProjectCountVO();
projectCountVO.setId(projectId);
//查询项目名称
String projectName = Optional.ofNullable(applicationServicePlatformClientProxy.queryProjectName(projectId)).orElse("");
projectCountVO.setName(projectName);
List<TaskTask> taskList = projectTaskEntry.getValue();
projectCountVO.setTaskCount(taskList.size());
Integer problemCount = CollectionUtil.isEmpty(taskList) ? 0 : taskList.stream().collect(Collectors.summingInt(task -> Optional.ofNullable(task.getProblemNum()).orElse(0)));
projectCountVO.setProblemCount(problemCount);
result.add(projectCountVO);
}
return result;
}
```
修改说明:
1. 在查询项目名称时,应该在 Optional.ofNullable() 后面加上 orElse(""),以避免 projectName 为空时出现 NullPointerException。
2. 对于 Optional.ofNullable(task.getProblemNum()).orElse(0) 这一行代码,建议加上括号以提高可读性。
解释 Optional<LocalDateTime> timedCollectionBeginTime = Optional.ofNullable(setting.getTimedCollectionBeginTime()); Optional<LocalDateTime> timedCollectionEndTime = Optional.ofNullable(setting.getTimedCollectionEndTime()); LocalDateTime now = LocalDateTime.now(); if (setting.getTimedCollection() && timedCollectionBeginTime.isPresent() && timedCollectionBeginTime.get().isAfter(now)) { return ReturnData.error().errorMessage(StrUtil.isEmpty(setting.getTimedNotEnabledPromptText()) ? "表单时间未开始。" : setting.getTimedNotEnabledPromptText()); } if (setting.getTimedCollection() && timedCollectionEndTime.isPresent() && timedCollectionEndTime.get().isBefore(now)) { return ReturnData.error().errorMessage(StrUtil.isEmpty(setting.getTimedDeactivatePromptText()) ? "表单时间已结束。" : setting.getTimedDeactivatePromptText()); }
这段代码是一个判断表单是否在规定时间内进行收集的逻辑。首先使用了 Optional 类型来包装开始时间和结束时间,以便在值为 null 的情况下,不会出现空指针异常。然后获取当前时间,判断表单是否需要在规定时间内进行收集。如果需要,就分别判断开始时间和结束时间是否存在且是否在规定时间范围内,如果不在,则返回错误信息。其中,StrUtil.isEmpty() 方法用于判断字符串是否为空。最终返回的是一个 ReturnData 对象,包含错误信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)