Transformando uma string vazia em uma opcional vazia
1. Introdução
Neste tutorial rápido, apresentaremos diferentes maneiras detransform a null or empty String into an empty Optional.
Obter umOptional vazio denull é simples - usamos apenasOptional.ofNullable(). Mas, e se quisermos queStrings vazio funcione dessa maneira também?
Então, vamos explorar algumas opções diferentes para converter umString vazio em umOptional. vazio
2. Usando Java 8
No Java 8, podemos aproveitar o fato de queif an Optional#filter‘s predicate isn’t met, then it returns an empty Optional:
@Test
public void givenEmptyString_whenFilteringOnOptional_thenEmptyOptionalIsReturned() {
String str = "";
Optional opt = Optional.ofNullable(str).filter(s -> !s.isEmpty());
Assert.assertFalse(opt.isPresent());
}
E nem mesmo precisamos verificarnull aqui desdeofNullable will short-circuit for us in cases where str is null.
Criar umlambda especial para o predicado é um pouco complicado, no entanto. Não podemos nos livrar disso de alguma forma?
3. Usando Java 11
A resposta ao desejo acima não vem realmente até Java 11.
No Java 11, ainda usaremosOptional.filter(),, mas o Java 11 apresenta uma nova APIPredicate.not() que facilita a negação de referências de método.
Então, vamos simplificar o que fizemos antes, agora usando uma referência de método:
@Test
public void givenEmptyString_whenFilteringOnOptionalInJava11_thenEmptyOptionalIsReturned() {
String str = "";
Optional opt = Optional.ofNullable(str).filter(Predicate.not(String::isEmpty));
Assert.assertFalse(opt.isPresent());
}
4. Usando goiaba
Também podemos usarGuava para satisfazer nossas necessidades. No entanto, nesse caso, usaremos uma abordagem um pouco diferente.
Em vez de chamar um métodofilter em um resultado deOptional#ofNullable, primeiro converteremos umString vazio emnull usandoString#emptyToNull de Guava e só então o passaremos paraOptional#ofNullable:
@Test
public void givenEmptyString_whenPassingResultOfEmptyToNullToOfNullable_thenEmptyOptionalIsReturned() {
String str = "";
Optional opt = Optional.ofNullable(Strings.emptyToNull(str));
Assert.assertFalse(opt.isPresent());
}
5. Conclusão
Neste breve artigo, exploramos diferentes maneiras de transformar umString vazio em umOptional. vazio
Como de costume, os exemplos usados neste artigo podem ser encontrados em nossoGitHub project.