Guava – podstawy

Guava – podstawy


Guava to bardzo przydatna biblioteka do Javy stworzona przez Google. Pomimo pojawienia się JDK 8, które dostarcza nam więcej utilsów, Guava nadal pozostaje podstawową biblioteką do Javy, upraszczającą codzienne programowanie, wykorzystywanie najpopularniejszych algorytmów i sprawiającą że kod wygląda bardziej “elegancko”. Poniżej przedstawienie kilku podstawowych ficzerów Guavy.

Unikanie NullPointerException

 

Wartość null jest powszechnie spotykana w Javie. Programiści często zapominają zabezpieczyć program przed wystąpieniem null’a (np dla informacji pobieranych z bazy danych). Guava pozwala nam “opakować” potencjalnie niebezpieczny fragment kodu w ten sposób:

Optional<Integer> optional = Optional.ofNullable(possiblyNullableVariable);
if(optional.isPresent()) {
   return optional.get();
}

 

Możemy również od razu wyznaczyć wartość, która ma zostać zwrócona w przypadku pojawienia się null:

Integer optional = Optional.ofNullable(possiblyNullableVariable).orElse(0);

 

Sortowanie kolekcji

 

Guava wspiera nas również przy sortowaniu np list. Możemy skorzystać z dwóch zdefiniowanych typów sortowania: natural i usingToString() lub zdefiniować własne sortowanie:

Ordering<String> poDlugosciLancucha = new Ordering<String>() {
 public int compare(String left, String right) {
   return Ints.compare(left.length(), right.length());
 }
};

 

Przydatnym również jest tzw chaining, czyli opakowywanie jednego typu sortowania w inny, aby uzyskać ostateczny efekt:

Ordering<Test> ordering = Ordering.natural().nullsFirst().onResultOf(new Function<Test, String>() {
 public String apply(Test t) {
   return t.sortedBy;
 }
});

 

Myślę, że jest to tak bardzo czytelne, że nie wymaga komentarza.

 

Equals i hashCode

 

W Javie każda klasa modelująca dane (np encja) powinna mieć zaimplementowaną metodę equals, która służy oczywiście do porównywania obiektów. Z kontraktu equals-hashCode wynika, że implementacja equals powinna pociągnąć za sobą również dodanie metody hashCode (złamanie kontraktu może skutkować np niepoprawnym sortowaniem kolekcji). Guava również i tutaj dostarcza nam bardzo fajne utilsowe metody, które pozwalają łatwo i bez bólu zaimplementować wspomniane wyżej metody:

Objects.equal(obj1, obj2);
Objects.hashCode(field1, field2, ..., fieldn);


Pamiętajmy, że większość profesjonalnych IDE ma wbudowaną opcję wygenerowania tych metod na podstawie podanego przez nas szablonu (np z Guava).

 

Oferta Nasza misja Skontaktuj się

VISIX Systemy informatyczne
ul. Reja 19 62-100 Wągrowiec
NIP: 766 19 40 695
Zajmujemy się projektowaniem i wytwarzaniem zaawansowanych systemów
informatycznych wspierających pracę w rozmaitych dziedzinach przemysłu
i badań naukowych. Nasze oprogramowanie cechuje wysoka jakość wykonania,
minimalizm, ukierunkowanie na użytkownika oraz bardzo konkurencyjna cena.
(c) 2018 by VISIX, Theme by trendyWebStar modified by Leospace

Zapisz się na nasz newsletter!

Zapisz się, a będziemy Cię informować o wszystkich nowosciach!