Guava – Optional

Guava Optional

 

I call it my billion-dollar mistake. – Tony Hoare.

 

Null w jakiejkolwiek postaci spędza sen z powiek programistom. Powstają coraz odważniejsze próby pisania kodu, który nie będzie posiadał nulla lub będzie on ograniczony do minimum. Guava ma własną implementację takiego cuda…

Co to takiego optional? Ano to takie „opakowanie” typu, dzięki któremu w bardzo wielu przypadkach możemy pożegnać się z nullami i sprawdzeniami czy wartość jest nullem.

I już 🙂 Tworzymy optionala i przypisujemy mu wartość „Janek”.

A tutaj tworzymy optionala, który nie ma wartości, a dokładniej, ma wartość absent.

A jeśli nie wiemy, czy wartość ma w tej chwili nulla ? Jest to najczęstszy przypadek

Gdzie metoda getAddress() może nam zwrócić nulla lub String’a.

Ok, a jak się teraz dobrać do takiego Optionala?

 

Optional udostępnia kilka metod:

Możemy sprawdzić, czy w optionalu jest wartość…

Możemy pobrać wartość jeśli wiemy, że istnieje, w innym przypadku dostaniemy exception

Możemy pobrać wartość, i jeśli nie istnieje dostać nulla

A teraz najfajniejsza sprawa – możemy pobrać wartość, i jeśli nie istnieje, przypisać jej wartość domyślną…

lub jeśli używamy Java 8 możemy zrobić to funkcyjnie…

A to ciekawostka – metoda transform. Możemy do optionala dodać logikę, która zwróci nam nowego optionala zupełnie innego typu. Zamienić jednego na drugiego. W tym wypadku implementacja jest prosta – zawsze zwracam 0…

Jeśli ktoś nie ma Javy 8, to poniższy kod wykona zadanie w ten sam sposób…

Jak widać Guava Optional to banalna sprawa, i używając tych rozwiązań z głową pozwoli nam uniknąć jakże wkurzających Null Pointer Exceptions 🙂

BTW – Java 8 też ma własną implementację Optional. Poświęcę temu tematowi kolejny wpis.

 

«
»