Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
How to avoid using Optional.get and Optional.isPresent
public ValueA map(ValueB valueB, Date date) {
    Optional<ValueC> valueCOpt = find(valueB);
    if (valueCOpt.isPresent()) {
        ValueC valueC = valueCOpt.get();
        // call many getters on valueC and do a lot of logic with it.
        return map(/*some parameters*/);
    }
    return null;
}

This seems quite ugly. The advantage of optionals is completely gone in here. I read that one should rather use map or flatMap instead of get. But is it really a benefit if I replace every getter like

valueC.getFieldA()

with

valueCOpt.map(ValueC::getFieldA)

Do you know some common or best practices here?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

You can use

public ValueA map(ValueB valueB, Date date) {
    return find(valueB)
        .map(valueC -> {
            // call many getters on valueC and do a lot of logic with it.
            return map(/*some parameters*/);
        })
        .orElse(null);
}

the key point is that the mapping function is only evaluated, if the optional is not empty, otherwise, the result stays an empty optional. orElse(null) will return null if the optional is empty.

about 4 years ago · Santiago Trujillo Relatório

0

What you need is to map, then a orElse(), or orElseThrow() if you need an exception

ValueA valueA = valueCOpt.map(valueC -> mapToValue(valueC))
       .orElse(null);

orElse() is used when you need a default value, in this case its null

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda