Strona główna > Czym jest Record w Javie

Czym jest Record w Javie

Czasami, gdy piszemy w Javie, potrzebujemy stworzyć bardzo proste klasy, których jedynym zadaniem jest przenoszenie informacji. Takie klasy posiadają zwykle prywatne pola, gettery i konstruktory, co generuje dużo nadmiarowego kodu. Możemy się go jednak pozbyć używając rekordów, czyli specjalnych klas, które utworzymy za pomocą słowa kluczowego record.

Record vs. klasyczna klasa w Javie

Rekordy zostały wprowadzone do Javy w wersji 14 jako eksperymentalna funkcja, a oficjalnie zaczęły działać od wersji 15. Pozwalają one ustalić strukturę klasy za pomocą jednego słowa kluczowego record oraz listy parametrów. Spójrzcie na poniższy przykład:

Ta klasa jest właśnie takim nośnikiem informacji. W konstruktorze inicjalizujemy wszystkie prywatne pola i udostępniamy gettery, aby umożliwić pobieranie wartości tych pól. W przypadku, gdy tworzysz taką klasę w Javie w wersji 15 lub wyższej, narzędzie IntelliJ samo zasugeruje, że można z niej zrobić rekord. Gdy zgodzisz się na tę sugestię i pozwolisz IntelliJ zmienić tę klasę na rekord, otrzymasz:

Tak, tylko tyle. To, co robi powyższy kod, to:

  • Tworzy klasę o nazwie User za pomocą rekordu;
  • Rekord definiuje prywatne, finalne pola: name, lastName, email i age;
  • Rekord dostarcza automatycznie gettery do każdego z tych pól. Gettery nazywają się tak jak pola, np. name();
  • Rekord posiada również konstruktor, który przyjmuje argumenty i przypisuje je do odpowiadających pól;
  • Dodatkowo, rekord zawiera metodę equals() do porównywania dwóch obiektów tej klasy;
  • Rekord ma metodę toString(), która pozwala przedstawić obiekt tej klasy jako String;
  • Rekord generuje także metodę hashCode(), która zwraca wartość liczbową typu int dla każdego obiektu. Jeżeli metoda equals() porównująca dwa obiekty zwróci false, to także metoda hashCode() na każdym z tych obiektów zwróci inną wartość liczbową.

Metody equals(), hashCode() i toString() są przysłoniętymi metodami z klasy Object.

Przekształcanie rekordów w klasyczne klasy

Żeby zobaczyć jak klasa utworzona za pomocą rekordu dokładnie wygląda, wystarczy, że zamienimy rekord z powrotem na “normalną” klasę. Możemy w tym celu kliknąć w słówko record i z żółtej żarówki wybrać opcję “Convert record to class”:

Convert record to class w IntelliJ - screenshot

Zobaczymy wtedy dokładnie opisaną wyżej klasę:

Czyli wszystko, co widzicie powyżej, możecie zmieścić w tym:

Dzięki temu nie klepiemy tyle powtarzalnego kodu, a mamy wszystko czego do tego rodzaju klasy potrzebujemy.

Kiedy warto przesiąść się na rekordy w Javie

Najlepiej wtedy, gdy chcemy tworzyć klasy, których głównym celem jest przechowywanie danych. Pozwoli nam to zredukować zarówno ilość kodu jak i czas pracy. Natomiast klasy są lepszym wyborem, gdy potrzebujemy stworzyć coś bardziej zaawansowanego z wieloma polami i metodami.

Dajcie znać, czy używacie rekordów w swoich projektach, jak Wam się sprawdzają i czemu bardzo dobrze. 😈

Chcesz poćwiczyć Javę w zadaniach? Dołącz do 5-dniowego wyzwania!

Co dwa dni dostaniesz jedno zadanie do rozwiązania, a w kolejnym mailu rozwiązanie z komentarzem.