Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando o Java 8 Optional: Guia Prático para Código Null‑Safe

O Optional é um objeto contêiner usado para armazenar objetos não nulos. Ele representa a ausência de valor em vez de null, fornecendo métodos utilitários para lidar com valores como "presente" ou "ausente", evitando verificações explícitas de null. Introduzido no Java 8, é semelhante ao Optional do Guava.

Declaração da Classe

Segue a declaração da classe java.util.Optional<T>:

public final class Optional<T> extends Object

Métodos da Classe

NºMétodo e Descrição
1

static <T> Optional<T> empty()

Retorna uma instância vazia de Optional.

2

boolean equals(Object obj)

Indica se outro objeto é "igual a" este Optional.

3

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

Se um valor estiver presente e corresponder ao predicado, retorna um Optional descrevendo o valor; caso contrário, retorna um Optional vazio.

4

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

Se um valor estiver presente, aplica a função de mapeamento que retorna Optional e devolve o resultado; caso contrário, retorna um Optional vazio.

5

T get()

Retorna o valor se presente; caso contrário, lança NoSuchElementException.

6

int hashCode()

Retorna o código hash do valor presente ou 0 se nenhum valor estiver presente.

7

void ifPresent(Consumer<? super T> consumer)

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

8

boolean isPresent()

Retorna true se houver um valor presente, false caso contrário.

9

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

Se um valor estiver presente, aplica a função de mapeamento e, se o resultado não for nulo, retorna um Optional descrevendo o resultado.

10

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

Retorna um Optional com o valor não nulo especificado.

11

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

Retorna um Optional descrevendo o valor especificado se não nulo; caso contrário, retorna um Optional vazio.

12

T orElse(T other)

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

13

T orElseGet(Supplier<? extends T> other)

Retorna o valor se presente; caso contrário, invoca other e retorna o resultado da 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 criada pelo supplier fornecido.

15

String toString()

Retorna uma representação em string não vazia deste Optional, adequada para depuração.

Esta classe herda métodos de:

Exemplo de Uso do Optional

Crie o seguinte programa Java em, por exemplo, 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 permite parâmetro null
        Optional<Integer> a = Optional.ofNullable(value1);
        // Optional.of lança NullPointerException se o parâmetro for null
        Optional<Integer> b = Optional.of(value2);

        System.out.println(java8Tester.sum(a, b));
    }

    public Integer sum(Optional<Integer> a, Optional<Integer> b) {
        // Verifica se o valor está presente
        System.out.println("Primeiro parâmetro presente: " + a.isPresent());
        System.out.println("Segundo parâmetro presente: " + b.isPresent());

        // Retorna o valor ou um padrão se ausente
        Integer value1 = a.orElse(new Integer(0));
        // Obtém o valor (deve estar presente)
        Integer value2 = b.get();

        return value1 + value2;
    }
}

Verificando o Resultado

Compile com javac:

C:\JAVA>javac Java8Tester.java

Execute:

C:\JAVA>java Java8Tester

Saída esperada:

Primeiro parâmetro presente: false
Segundo parâmetro presente: true
10

Java

  1. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  2. Operador instanceof em Java: Guia Completo
  3. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  4. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  5. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  6. Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
  7. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
  8. Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
  9. Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão
  10. Java 9: Novos Recursos para a Classe Optional