Optional<T> models absent values without null—use for return types, not fields or parameters. Records (Java 16+) are immutable data carriers with generated equals/hashCode/toString.
Optional
Optional<User> find(String id) {
return Optional.ofNullable(cache.get(id));
}
find("1").map(User::name).orElse("Guest");
Record
record User(String email, String name) {}
Important interview questions and answers
- Q: Optional vs null?
A: Optional forces callers to consider absence; avoid Optional.get() without isPresent—use orElse/orElseThrow. - Q: Record vs class?
A: Record for immutable data; class when behavior and mutable state dominate.
Self-check
- What method safely returns a default from Optional?
- Are record fields mutable by default?