Alta tocando:
Vamos supor que temos um caso declaração como esta:
public A save(A a) {
if (isValid.test(a)) {
return aRepository.save(a);
}
throw new ANotValidException("A is not valid");
}
isValid
é um predicado e pode olhar como:
private Predicate<A> isValid = (a) -> (a != null);
O que você acha? Posso fazê-lo mais limpo de alguma forma? Quer dizer, por exemplo, utilizando um Optional
para reduzi-la em uma linha com um.orElseThrow();
também:
Uma versão mais precisa usando Optional
e throw
ing um costume Exception
devem ser:
public A save(A a) throws ANotValidException { // throws the custom exception
return Optional.ofNullable(a) // since your predicate is to check for not null
.map(aRepository::save)
.orElseThrow(() -> new ANotValidException(a + "A is not valid"));
}