Optional and Absence Modeling
Optional<T> models a value that may be absent. It is most useful as a return type when absence is a meaningful outcome.
Optional<String> username = findUsername();
String display = username
.map(String::trim)
.filter(value -> !value.isEmpty())
.orElse("anonymous");
Avoid using Optional as a field or parameter by default. orElse evaluates its fallback immediately, while orElseGet evaluates a supplier lazily.
Avoid get() without first establishing presence.
Optional is not a magic null killer
Use Optional deliberately at API boundaries where absence is part of the contract.
Key Takeaways
- Use Optional to model meaningful absence.
orElseGetis lazy;orElseevaluates its argument eagerly.- Avoid unsafe
Optional.get()patterns.