Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Uma dúvida sobre a lambda utilizada

Boa noite!

Verificando o método orElseThrow , dentro da classe Optional temos o seguinte :

 public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
        if (value != null) {
            return value;
        } else {
            throw exceptionSupplier.get();
        }
    }

Minha dúvida seria :

Supllier é uma interface funcional (possui apenas um único método abstrato) sem retorno (do tipo void).

Gostarei de entender o por quê ao invés colocar

.orElseThrow(() -> new RuntimeException("Método não encontado"));

eu não posso colocar

.orElseThrow(() -> new Produto);


d`

Como que eu consigo enxergar que um tipo de retorno está sendo passado para esse consummer?

1 resposta
solução!

Olá Ney

Como você pode ver, no método orElseThrow existe um <X extends Throwable>, isso significa que o X (recebido via argumento do método) precisa ser uma classe que faz extends de Throwable. Além disso, throws X significa que esse argumento será lançado como Exception pela JVM