AnyCompiler

O Tipo Optional

Optional<T> representa um valor que pode ou não estar presente, como uma alternativa explícita a retornar null e esperar que quem chama lembre de verificar. Optional.of(value) envolve um valor presente, Optional.empty() representa um ausente, e orElse(fallback) o desembrulha com segurança, fornecendo um padrão quando não há nada.

import java.util.Optional;

public class Main {
    static Optional<String> findUser(int id) {
        if (id == 1) {
            return Optional.of("Alice");
        }
        return Optional.empty();
    }

    public static void main(String[] args) {
        Optional<String> user = findUser(1);
        System.out.println(user.orElse("Unknown"));
        Optional<String> missing = findUser(2);
        System.out.println(missing.orElse("Unknown"));
    }
}
Output
Alice
Unknown

Essa é a base do Java: classes e interfaces para estruturar código, inheritance e polymorphism para compartilhar comportamento, generics e o Collections Framework para estruturas de dados reutilizáveis e type-safe, e lambdas e streams para o estilo mais moderno e funcional do Java. A partir daqui, o melhor próximo passo é praticar — escolha um programa pequeno e o construa, contando com a verificação estática de tipos do compilador para detectar erros ao longo do caminho.

Practice exercise

Escreva um method findUser(int id) que retorne um Optional<String>: "Alice" se id for 1, caso contrário empty. Chame-o com 2 e imprima o resultado com orElse("Unknown").

← static e finalMais lições em breve