Java 8 Optionals

Mamy Optionale w Java 8.

Pole typu Optional może albo mieć wartość, albo jej nie mieć. Ot cała idea Optionali. A ile w tym możliwości….

Postaram się pokazać jak pisać kod, który w znacznym stopniu usunie nulle z kodu…

 

Mamy prostą klasę Person

 

Pole name, lastName, age … o ile nie zostanie ustawione, będzie nullem…

Chyba nie muszę pisać, co stanie się, jeśli odwołamy się do pola, które jest nullem…. NullPointerException… bad bad bad …

Napiszmy pierwszą metodę… toString:

 

Ot cała filozofia…

Stworzy nam Optionala, który jeśli będzie nullem, będzie miał wartość „empty”, w innym wypadku będzie miał wartość, która została do niego przypisana.

metoda orElse przypisuje wartość, jaka ma być zwrócona jeśli Optional jest pusty (empty).

A to dopiero początek możliwości… dzięki temu możemy wykonywać operacje warunkowe…. zapomnijmy o starym

Od teraz możemy napisać coś takiego…

metoda ifPresent zostanie wykonana tylko jeśli wartość getName nie będzie nullem lub jeśli cały optional nie będzie empty, co jest tym samym.

Metoda ifPresent nic nie zwraca… a jeśli chcemy coś zwrócić ?

mniej ifów… mniej problemów…

map(…) to nic innego jak funkcja, która zwraca to co chcemy jeśli istnieje wartośc… orElse … zwraca coś jeśli nie ma wartości…

A jakaś logika ? Może jakiś  filtr? Proszę bardzo….

Czysto, czytelnie… i brak nulli 🙂

Można się pokusić i pójść nawet kawałek dalej i w ogóle nie zwracać ze zwykłych klas pól nie-optional…

 

wystaczy zamienić gettery w klasie na coś takiego …

W efekcie operacje na kodzie będą wyglądały tak:

Schludnie, deklaracje optionali ukryte w getterach… logika jasna i czytelna … i zero nulli 🙂

 

 

«
»