Objects.isNull vs. Optional.ofNullable [duplicado]
Oct 21 2020
Eu tenho este pedaço de código usado em um teste
if (Objects.isNull(o)) {
return null;
}
return String.valueOf(o);
e quando eu substituo este pedaço de código por
Optional.ofNullable(String.valueOf(o)).orElse(null);
Tenho este erro de afirmação em meus testes:
Expecting: <"null">
to be equal to: <null>
but was not.
Respostas
2 ernest_k Oct 21 2020 at 17:12
Optional.ofNullable(String.valueOf(o))não será um opcional vazio quando o == null, porque String.valueOf(null)retorna a String "null".
O uso correto de opcional é:
Optional.ofNullable(o).map(String::valueOf).orElse(null);
Onde ofNullable(null)tornará um vazio opcional, fazendo orElse(null)com que seja eventualmente invocado.
1 ShekharKhairnar Oct 21 2020 at 17:11
String.valueOf () retorna toStirng () de um objeto se não for nulo ou retorna string "nula"
direto da classe String:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
isso significa que em sua afirmação você está testando "nulo" igual a nulo, o que falha.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino