Я пытаюсь использовать Optional вместо стандартных нулевых проверок в java
@Data
public class InputObj {
private Double savings;
}
@Data
public class Result {
private String outputSavings;
}
public Result convertInputObjToResult(InputObj inputObj){
Result result = new Result();
Optional<InputObj> optionalInputObj = Optional.ofNullable(inputObj);
optionalInputObj.map(InputObj::getSavings).map(value -> util.convertRoundAndAbs(value,true)).ifPresent(result::setOutputSavings);
return result;
}
, что эквивалентно ниже
public Result convertInputObjToResult(InputObj inputObj){
Result result = new Result();
if(inputObj != null){
if(inputObj.getSavings() != null){
result.setOutputSavings(util.convertRoundAndAbs(inputObj.getSavings(),true));
}
}
return result;
}
Я написал несколько тестовых случаев, и я не получаю исключения Null Pointer Exception, но я не могу понять, что условие ifPresent находится в конце, а map - раньше, но все же я не получаю NPE. Вы видите что-то неправильное в этом коде или как его можно улучшить? Это часть приложения весенней загрузки, а для ломбока используется аннотация @Data.