我在使用Optional.ifPresent语句时遇到了一些问题。我想减少的数量NullPointerExceptions,所以我决定使用Optional值。
我也试图避免if反模式的语句阶梯。
所以我实施了Optional.isPresent声明。但这并不是我所期望的。
请查看这些清单:
这是我服务的一部分:
if (getAllComputerProducers().isPresent()) {
if (isComputerProducerAlreadyExist(computerProducer))
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
computerProducerRepository.save(computerProducer);
return new ResponseEntity<>(HttpStatus.CREATED);
getAllComputerProducers函数看起来像这样:
private Optional<List<ComputerProducer>> getAllComputerProducers() {
return Optional.ofNullable(computerProducerRepository.findAll());
}
如您所见,此函数Optional返回List.
该isComputerProducerAlreadyExist功能是这样实现的:
private boolean isComputerProducerAlreadyExist(ComputerProducer computerProducer) {
return getAllComputerProducers()
.get()
.stream()
.anyMatch(producer -> producer.getProducerName()
.equalsIgnoreCase(computerProducer.getProducerName()));
}
代码太多了,我相信它可以变得更简单。我的目标是将代码缩减为一行命令,例如:
getAllCimputerProducers().ifPresent(***and-here-some-anyMatch-boolean-function***)
但我不能在那里插入一个返回某些东西的函数。我该怎么做?
问候大家:)
不负相思意
慕桂英3389331
杨__羊羊
相关分类