有一个接收“someObj”的方法,其目的是检查 Set<> 类型的 var ASet,遍历它并将其对象替换为数据库对象。为此,我编写了以下代码:
if(!CollectionUtils.isEmpty(someObj.getASet())){
someObj.setASet(
someObj.getASet()
.stream()
.map( c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
);
}
它达到了目的,但我对它的可读性真的不满意。
Optional.ofNullable(someObj.getASet())
.ifPresent( ASet-> someObj.setASet(
ASet.stream()
.map( c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
));
现在它看起来更不可读了,你能推荐一个更好的方法吗?我认为最糟糕的问题是 someObj.setASet,它看起来很奇怪,有没有什么功能性的方法可以在收集后替换该对象?