Optional for Null Safety
Demonstrates using Optional to handle potentially absent values safely, with map, flatMap, filter, orElse, and ifPresent operations to avoid NullPointerExcep...
Code
import java.util.Optional;
import java.util.List;
public class OptionalHandling {
record User(String name, String email) {}
static Optional<User> findUser(List<User> users, String name) {
return users.stream()
.filter(u -> u.name().equals(name))
.findFirst();
}
public static void main(String[] args) {
List<User> users = List.of(
new User("Alice", "[email protected]"),
new User("Bob", "[email protected]")
);
String email = findUser(users, "Alice")
.map(User::email)
.orElse("not found");
System.out.println("Alice's email: " + email);
findUser(users, "Charlie")
.ifPresentOrElse(
u -> System.out.println("Found: " + u),
() -> System.out.println("Charlie not found")
);
String upperEmail = findUser(users, "Bob")
.map(User::email)
.filter(e -> e.endsWith(".com"))
.map(String::toUpperCase)
.orElseThrow(() -> new RuntimeException("Invalid email"));
System.out.println("Bob's email (upper): " + upperEmail);
Optional<String> combined = findUser(users, "Alice")
.flatMap(u -> Optional.ofNullable(u.email()));
System.out.println("FlatMapped: " + combined);
}
}Report a problem with this exampleOpens a pre-filled issue on GitHub.