Reescrever uma instrução if que lança uma exceção em uma maneira mais limpa

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 Optionalpara reduzi-la em uma linha com um.orElseThrow();

também:

Uma versão mais precisa usando Optionale throwing um costume Exceptiondevem 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"));
}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=281695&siteId=1
Recomendado
Clasificación