Pre-Java 8 Approaches:
The Java 8 approach:
Advantages of using Optional:
Useful methods of the Optional class:
Avoid involving collections in Optional:
Performance considerations:
Be careful with other uses of Optional:
Avoid using them as Map keys or values or in collections.
Avoid using them as instance fields unless it makes sense, like in optional getters.
Code Examples
Example 1: Basic use of Optional
import java.util.Optional; public class ExemploOptional { public static Optional<String> encontrarNome(String[] nomes, String nomeBuscado) { for (String nome : nomes) { if (nome.equalsIgnoreCase(nomeBuscado)) { return Optional.of(nome); } } return Optional.empty(); // Retorna Optional vazio se não encontrar o nome } public static void main(String[] args) { String[] nomes = {"João", "Maria", "Ana"}; Optional<String> nomeEncontrado = encontrarNome(nomes, "Maria"); nomeEncontrado.ifPresent(nome -> System.out.println("Nome encontrado: " + nome)); System.out.println(nomeEncontrado.orElse("Nome não encontrado")); } }
Example 2: Using orElseThrow
import java.util.Optional; public class ExemploOrElseThrow { public static Optional<Integer> buscarIdade(String nome) { if (nome.equals("João")) { return Optional.of(30); } return Optional.empty(); // Retorna Optional vazio se o nome não for "João" } public static void main(String[] args) { Optional<Integer> idade = buscarIdade("Maria"); // Lança uma exceção se o valor não estiver presente int valorIdade = idade.orElseThrow(() -> new IllegalArgumentException("Idade não encontrada!")); System.out.println("Idade: " + valorIdade); } }
Example 3: Optional with primitive types
import java.util.OptionalInt; public class ExemploOptionalInt { public static OptionalInt buscarIdade(String nome) { if (nome.equals("João")) { return OptionalInt.of(30); } return OptionalInt.empty(); // Retorna OptionalInt vazio se o nome não for "João" } public static void main(String[] args) { OptionalInt idade = buscarIdade("João"); if (idade.isPresent()) { System.out.println("Idade encontrada: " + idade.getAsInt()); } else { System.out.println("Idade não encontrada"); } } }
The above is the detailed content of Item Be careful when returning options. For more information, please follow other related articles on the PHP Chinese website!