Java 8 (LTS) · Topic 10 of 12
Optional
Definition​
Optional is a box that holds a value or is empty. It makes "there may be no result" visible in the method signature, so callers must decide what to do instead of hitting a NullPointerException.
Example code​
Finding a user that may not exist
import java.util.List;
import java.util.Optional;
record User(String name, String email) { }
class Demo {
static Optional<User> findByName(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("Asha", "asha@example.com"));
String email = findByName(users, "Asha")
.map(User::email)
.orElse("unknown");
System.out.println(email);
String missing = findByName(users, "Nobody")
.map(User::email)
.orElse("unknown"); // no NullPointerException, just a default
System.out.println(missing);
}
}
// Output:
// asha@example.com
// unknown
Finished this page? Track your progress (saved only in your browser).