Java 8 - classe opcional

Opcional é um objeto de contêiner usado para conter objetos não nulos. O objeto opcional é usado para representar nulo com valor ausente. Esta classe tem vários métodos utilitários para facilitar o código para manipular valores como 'disponíveis' ou 'não disponíveis' em vez de verificar valores nulos. Ele foi introduzido no Java 8 e é semelhante ao opcional do Guava.

Declaração de Classe

A seguir está a declaração para java.util.Optional<T> classe -

public final class Optional<T> extends Object

Método de Classe

Sr. Não. Método e Descrição
1

static <T> Optional<T> empty()

Retorna uma instância opcional vazia.

2

boolean equals(Object obj)

Indica se algum outro objeto é "igual" a este Opcional.

3

Optional<T> filter(Predicate<? super <T> predicate)

Se um valor estiver presente e o valor corresponder a um determinado predicado, ele retornará um opcional que descreve o valor; caso contrário, retornará um opcional vazio.

4

<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

Se um valor estiver presente, ele aplica a função de mapeamento de rolamento opcional fornecida a ele, retorna esse resultado, caso contrário, retorna um opcional vazio.

5

T get()

Se um valor estiver presente neste Optional, retorna o valor, caso contrário, lança NoSuchElementException.

6

int hashCode()

Retorna o valor do código hash do valor presente, se houver, ou 0 (zero) se nenhum valor estiver presente.

7

void ifPresent(Consumer<? super T> consumer)

Se um valor estiver presente, ele chama o consumidor especificado com o valor, caso contrário, não faz nada.

8

boolean isPresent()

Retorna verdadeiro se houver um valor presente; caso contrário, é falso.

9

<U>Optional<U> map(Function<? super T,? extends U> mapper)

Se um valor estiver presente, aplica a função de mapeamento fornecida a ele e, se o resultado não for nulo, retorna um opcional que descreve o resultado.

10

static <T> Optional<T> of(T value)

Retorna um opcional com o valor não nulo presente especificado.

11

static <T> Optional<T> ofNullable(T value)

Retorna um Opcional que descreve o valor especificado, se não nulo; caso contrário, retorna um Opcional vazio.

12

T orElse(T other)

Retorna o valor se presente; caso contrário, retorna outro.

13

T orElseGet(Supplier<? extends T> other)

Retorna o valor se presente, caso contrário, invoca other e retorna o resultado dessa invocação.

14

<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

Retorna o valor contido, se presente, caso contrário, lança uma exceção a ser criada pelo fornecedor fornecido.

15

String toString()

Retorna uma representação de string não vazia deste Opcional adequado para depuração.

Esta classe herda métodos da seguinte classe -

  • java.lang.Object

Exemplo Opcional

Crie o seguinte programa Java usando qualquer editor de sua escolha em, digamos, C: \> JAVA.

Java8Tester.java

import java.util.Optional;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);
		
      //Optional.ofNullable - allows passed parameter to be null.
      Optional<Integer> a = Optional.ofNullable(value1);
		
      //Optional.of - throws NullPointerException if passed parameter is null
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }
	
   public Integer sum(Optional<Integer> a, Optional<Integer> b) {
      //Optional.isPresent - checks the value is present or not
		
      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());
		
      //Optional.orElse - returns the value if present otherwise returns
      //the default value passed.
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - gets the value, value should be present
      Integer value2 = b.get();
      return value1 + value2;
   }
}

Verifique o resultado

Compile a classe usando javac compilador da seguinte forma -

C:\JAVA>javac Java8Tester.java

Agora execute o Java8Tester da seguinte maneira -

C:\JAVA>java Java8Tester

Ele deve produzir a seguinte saída -

First parameter is present: false
Second parameter is present: true
10