Weź dwa przykłady kodu:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
O ile mogę stwierdzić, najbardziej oczywistą różnicą jest to, że Opcjonalne wymaga utworzenia dodatkowego obiektu.
Jednak wiele osób zaczęło szybko przyjmować Opcjonalne. Jaka jest zaleta korzystania z opcji zamiast kontroli zerowej?
if
stwierdzenia są baaardzo ostatniej dekadzie, a wszyscy są za pomocą abstrakcji monada lambdy i teraz.
if(x.isPresent) fails_on_null(x.get)
że wychodzisz z systemu typów i musisz zachować gwarancję, że kod nie złamie się „w twojej głowie” na (co prawda krótkiej) odległości między warunkiem a wywołaniem funkcji. W optional.ifPresent(fails_on_null)
systemie typu ta gwarancja jest dla Ciebie i nie musisz się martwić.
Optional.ifPresent
(i różnych innych konstrukcji Java) jest to, że można skutecznie modyfikować tylko zmienne końcowe i nie można zgłaszać sprawdzonych wyjątków. Jest to wystarczający powód, aby często ifPresent
niestety unikać .