Transformando uma string vazia em uma opcional vazia

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.