使用lambda的inline避免意外null的java筛选
我有每个元素的列表,我想这样做(使用Java 8):
disabledUsersOnLDAP.stream().forEach(user -> usersRepository
.findEnabledByUsername(user.getUserName()).setEnabled(false));
无论如何usersRepository.findEnabledByUsername
可能返回null
当然,我可以这样做:
disabledUsersOnLDAP.stream().forEach(user -> {
UserEntity userEntity = usersRepository.findEnabledByUsername(user.getUserName());
{
if (userEntity != null) {
userEntity.setEnabled(false);
}
}
});
但是我想知道我是否可以内联执行null
检查(在第一个选项中)
# 1 楼答案
@assyliasanswser的一些替代方案
使用对Objects==nonNull的方法引用进行
null
检查:如果可以使用
disable
方法更新UserEntity
您可以再次使用方法引用(
UserEntity::disable
):一些资源:
# 2 楼答案
您可以在运行
forEach
部分之前进行映射+过滤,这也让它更具可读性:或者作为替代: