{"id":2171,"date":"2019-09-21T11:26:08","date_gmt":"2019-09-21T09:26:08","guid":{"rendered":"https:\/\/www.kompikownia.pl\/?p=2171"},"modified":"2019-09-21T11:28:05","modified_gmt":"2019-09-21T09:28:05","slug":"umiejetnosc-obslugi-ide-java-intellij-idea-lombok-i-sonarlint","status":"publish","type":"post","link":"https:\/\/www.kompikownia.pl\/index.php\/2019\/09\/21\/umiejetnosc-obslugi-ide-java-intellij-idea-lombok-i-sonarlint\/","title":{"rendered":"Umiej\u0119tno\u015b\u0107 obs\u0142ugi IDE &#8211; Java &#8211; Intellij IDEA &#8211; Lombok"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">9<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span>\n<p>Witaj w trzeciej cz\u0119\u015bci serii Umiej\u0119tno\u015b\u0107 obs\u0142ugi IDE. Czytaj\u0105c dzisiejszy artyku\u0142 nauczysz si\u0119, jak w prosty i elegancki spos\u00f3b mo\u017cesz pozby\u0107 si\u0119 boilerplate code. Dzi\u0119ki temu tw\u00f3j kod b\u0119dzie kr\u00f3tszy, czytelniejszy, a zarazem bardziej elegancki. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Boilerplate code &#8211; co to jest i dlaczego czasami jest z\u0142y?<\/h2>\n\n\n\n<p>Czym jest boilerplate code, z kt\u00f3rym ju\u017c za chwil\u0119 b\u0119dziemy bohatersko walczyli? Wspomina\u0142em ju\u017c o nim <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/16\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-ii-intellij-idea\/\">w poprzedniej cz\u0119\u015bci<\/a>. Jest to kod, kt\u00f3ry w sumie jest niezb\u0119dny, ale jednocze\u015bnie nie tworzy logiki programu. Pojawia si\u0119 w wielu miejscach programu, wyst\u0119puj\u0105c w identycznej lub bardzo podobnej formule. Nie decyduje natomiast o tym, w jaki spos\u00f3b program zaspokaja potrzeby u\u017cytkownika.<a href=\"https:\/\/fullstackworld.com\/post\/what-is-boilerplate-code-why-when-to-use-the-boilerplate-code\"> W tym miejscu znajduje si\u0119 ciekawy artyku\u0142 na ten temat.<\/a><\/p>\n\n\n\n<p>Kojarzysz gettery i settery?<\/p>\n\n\n\n<pre>\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getName<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"kw1\">return<\/span> name<span class=\"sy0\">;<\/span><span class=\"br0\">&#125;<\/span> <br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setName<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> this<span class=\"sy0\">-&amp;<\/span>gt<span class=\"sy0\">;<\/span>name <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n\n<\/pre>\n\n\n\n<p>Tego typu kod nie realizuje \u017cadnej funkcji biznesowej. Nie wykonuje przecie\u017c \u017cadnych operacji na bazie danych ani nic nie oblicza. Niemniej, po prostu musi wyst\u0119powa\u0107. Dlaczego? W tym wypadku dobre praktyki programistyczne nakazuj\u0105&nbsp;odwo\u0142ywanie si\u0119&nbsp;do prywatnych atrybut\u00f3w klasy za pomoc\u0105 specjalnie stworzonych do tego celu metod. W przypadku gdy nasza klasa b\u0119dzie mia\u0142a kilkana\u015bcie atrybut\u00f3w, np.: imi\u0119, nazwisko, wiek, data urodzenia, gettery i settery wygeneruj\u0105 kilkadziesi\u0105t linijek kodu, kt\u00f3re s\u0105 praktycznie identyczne, ale musz\u0105 wyst\u0119powa\u0107. To nie jedyny przyk\u0142ad boilerplate&#8217;u, kt\u00f3ry mo\u017cemy napotka\u0107&nbsp;w naszych programach. <\/p>\n\n\n\n<p>Wiesz co robi metoda equals w Javie, prawda? Je\u015bli tak, domy\u015blasz si\u0119 pewnie, \u017ce jest ona cz\u0119sto niejawnie wywo\u0142ywana podczas korzystania z r\u00f3\u017cnych mechanizm\u00f3w j\u0119zyka Java. Popularnym przyk\u0142adem jest np.: ArrayLista, kt\u00f3r\u0105 chcieliby\u015bmy przeszuka\u0107&nbsp;aby znale\u017a\u0107 konkretn\u0105 osob\u0119. W ten spos\u00f3b Java wymusza na nas przes\u0142oni\u0119cie metody equals, gdy\u017c jest ona wykorzystywana do por\u00f3wnywania obiekt\u00f3w. No dobra, to zaimplementujmy t\u0119 metod\u0119. Potem przychodzi pora na dodanie kolejnej klasy, np.: Car (samoch\u00f3d). Ona te\u017c b\u0119dzie potrzebowa\u0142a metody equals, kt\u00f3ra b\u0119dzie wygl\u0105da\u0142a praktycznie identycznie jak ta z klasy Person!. Najprawdopodobniej nawet nie b\u0119dziemy trudzili si\u0119&nbsp;r\u0119cznie tylko zatrudnimy Intellij IDEA do wygenerowania tego rodzaju <em>niezb\u0119dnego kodu<\/em>. <a href=\"https:\/\/www.kompikownia.pl\/index.php\/2019\/08\/16\/umiejetnosc-obslugi-ide-uczyn-programowanie-wydajniejszym-cz-ii-intellij-idea\/\">Pokazywa\u0142em jak to zrobi\u0107&nbsp;w poprzedniej cz\u0119\u015bci<\/a>. <\/p>\n\n\n\n<p>Do jakiego wniosku dochodzimy? <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Boilerplate&#8217;a nikt nie chce, ale ka\u017cdy go potrzebuje<\/h3>\n\n\n\n<p><strong>Boilerplate jest niezb\u0119dny. <\/strong>Niesie on ze sob\u0105 kilka zalet, takich jak:<\/p>\n\n\n\n<ul><li><em>szybki development<\/em> &#8211; typowy prosty javowy boilerplate potrafi wygenerowa\u0107 Intellij IDEA. <\/li><\/ul>\n\n\n\n<p>Ale jednocze\u015bnie jego obecno\u015b\u0107 mo\u017ce <strong>potencjalnie <\/strong>prowadzi\u0107 do <strong>du\u017cej ilo\u015bci problem\u00f3w. <\/strong>Jakich, zapytasz? <\/p>\n\n\n\n<ul><li><em>bardzo du\u017cy wzrost liczby linijek programu <\/em>&#8211; mo\u017ce to nie by\u0107 wada sama w sobie. Mo\u017cesz si\u0119 przecie\u017c pochwali\u0107, \u017ce tw\u00f3j program ma 10 tys. linii. Tylko co z tego, skoro 8 tys z nich jest tam, bo po prostu musi tak by\u0107?<\/li><li><em>zmniejszona czytelno\u015b\u0107 kodu<\/em> &#8211; wynika poniek\u0105d z poprzedniego punktu. Wi\u0119cej linii=wi\u0119cej czasu musimy po\u015bwi\u0119ci\u0107 na analiz\u0119=kod jest mniej czytelny<\/li><li><em>wi\u0119ksza mo\u017cliwo\u015b\u0107&nbsp;pope\u0142nienia b\u0142\u0119du<\/em> &#8211; statystycznie, czym wi\u0119cej linii ma program tym wi\u0119cej posiada b\u0142\u0119d\u00f3w. W boilerplacie zwykle nie dzieje si\u0119 nic, co mog\u0142oby zak\u0142\u00f3ci\u0107 dzia\u0142anie aplikacji. Ale wystarczy wprowadzenie jednej, pozornie nic nieznacz\u0105cej modyfikacji aby w przysz\u0142o\u015bci nasza aplikacja wysypa\u0142a si\u0119 w najmniej odpowiednim momencie. <\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Lombok &#8211; biblioteka j\u0119zyka Java, kt\u00f3ra rozwi\u0105zuje wszystkie problemu z boilerplatem! <\/h2>\n\n\n\n<p>Pewni dobrzy ludzie stworzyli tak\u0105 bibliotek\u0119 do Javy, kt\u00f3ra zwie si\u0119 <strong>Lombok<\/strong> i nies\u0142ychanie u\u0142atwia \u017cycie. Nauczmy si\u0119 z niej korzysta\u0107!<\/p>\n\n\n\n<p>Na czym polega fenomen biblioteki Lombok? Wszystkie gettery, settery, a tak\u017ce metody kt\u00f3re bardzo cz\u0119sto nadpisujemy w identyczny spos\u00f3b, takie jak <em>equals, hashcode <\/em>mo\u017cemy zast\u0105pi\u0107 bardzo kr\u00f3tkimi adnotacjami! W najbardziej optymalnej wersji, wewn\u0105trz niekt\u00f3rych klas (w szczeg\u00f3lno\u015bci takich, kt\u00f3rych jedynym zadaniem jest przechowywanie danych) zostan\u0105 wtedy tylko prywatne atrybuty. \u017badnych konstruktor\u00f3w i \u017cadnych metod! Wszystko mog\u0105 zast\u0105pi\u0107 adnotacje. Prawda, \u017ce wygl\u0105da to arcyciekawie? No to zaczynajmy!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Instalacja biblioteki Lombok<\/h2>\n\n\n\n<p>Lombok naj\u0142atwiej zainstalowa\u0107 w projektach, kt\u00f3re korzystaj\u0105 z <strong>Maven. Maven <\/strong>to system zarz\u0105dzania zale\u017cno\u015bciami do projektu. Zajmuje si\u0119 on automatycznym \u015bci\u0105gni\u0119ciem wszystkich zale\u017cno\u015bci oraz ich konfiguracj\u0105. Ty wtedy skupiasz si\u0119 tylko i wy\u0142\u0105cznie na programowaniu. Nie my\u015blisz o tym, jak skonfigurowa\u0107 np.: classpath w taki spos\u00f3b, aby kompilator Javy to widzia\u0142. <\/p>\n\n\n\n<p style=\"color:#c41a00\" class=\"has-text-color\"><strong>UWAGA: <\/strong>W tej chwili zak\u0142adam, \u017ce posiadasz podstawowy projekt Maven wygenerowany za pomoc\u0105 Intellij IDEA.<\/p>\n\n\n\n<p>Dodajmy zale\u017cno\u015b\u0107 Lombok. Wejd\u017a w plik <em>pom.xml<\/em>. Odnajd\u017a sekcj\u0119 <em>dependencies. <\/em>(Je\u015bli nie istnieje &#8211; stw\u00f3rz j\u0105!). Dodaj wpis <em>dependency <\/em>w taki spos\u00f3b, jak na listingu poni\u017cej.<\/p>\n\n\n\n<pre>\n\n<div class=\"codecolorer-container xml default\" style=\"overflow:auto;white-space:nowrap;width:90%;\"><div class=\"xml codecolorer\">&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;dependencies<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;dependency<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;groupId<span class=\"re2\">&gt;<\/span><\/span><\/span>org.projectlombok<span class=\"sc3\"><span class=\"re1\">&lt;\/groupId<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;artifactId<span class=\"re2\">&gt;<\/span><\/span><\/span>lombok<span class=\"sc3\"><span class=\"re1\">&lt;\/artifactId<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;version<span class=\"re2\">&gt;<\/span><\/span><\/span>1.18.10<span class=\"sc3\"><span class=\"re1\">&lt;\/version<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;scope<span class=\"re2\">&gt;<\/span><\/span><\/span>provided<span class=\"sc3\"><span class=\"re1\">&lt;\/scope<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/dependency<span class=\"re2\">&gt;<\/span><\/span><\/span><br \/>\n&nbsp; &nbsp; <span class=\"sc3\"><span class=\"re1\">&lt;\/dependencies<span class=\"re2\">&gt;<\/span><\/span><\/span><\/div><\/div>\n\n<\/pre>\n\n\n\n<p>W prawym dolnym rogu Intellij IDEA pojawi si\u0119 monit z pytaniem, czy chcesz zaimportowa\u0107 zmiany. Kliknij <em>Import Changes. <\/em>Mo\u017cesz klikn\u0105\u0107&nbsp;te\u017c <em>Enable Auto Import. <\/em>Dzi\u0119ki aktywacji tej opcji Intellij IDEA b\u0119dzie importowa\u0142 zale\u017cno\u015bci i konfigurowa\u0142 ponownie projekt za ka\u017cdym razem, jak wprowadzisz i zapiszesz zmian\u0119 w pliku <em>pom.xml<\/em>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"316\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/09\/image-5.png\" alt=\"\" class=\"wp-image-2202\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Instalacja rozszerzenia dla Intellij IDEA<\/h3>\n\n\n\n<p>Ok. Lombok ju\u017c jest zainstalowany i mo\u017cemy bezproblemowo kompilowa\u0107 programy korzystaj\u0105ce z jego dobrodziejstw. Jednak\u017ce nam, jako programistom w tej chwili b\u0119dzie si\u0119 bardzo ci\u0119\u017cko programowa\u0142o. Dlaczego? Poniewa\u017c Intellij IDEA nie b\u0119dzie widzia\u0142o metod generowanych przez Lombok! Dlaczego? Po prostu musimy zainstalowa\u0107 plugin. Jak to zrobi\u0107?<\/p>\n\n\n\n<ul><li>Maj\u0105c odpalony jaki\u015b&nbsp;projekt w Intellij IDEA, na g\u00f3rnej belce okna klikamy File-&gt;Settings. W oknie, kt\u00f3re nam si\u0119 pojawi szukamy po lewej stronie opcji Plugins. Wybieramy ni\u0105.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1054\" height=\"706\" src=\"https:\/\/www.kompikownia.pl\/wp-content\/uploads\/2019\/09\/image-6.png\" alt=\"\" class=\"wp-image-2205\"\/><\/figure>\n\n\n\n<ul><li>W pole wyszukiwania u g\u00f3ry wpisujemy s\u0142owo <em>Lombok. <\/em>Wy\u015bwietli nam si\u0119 lista plugin\u00f3w. Lombok b\u0119dzie oczywi\u015bcie na samym pocz\u0105tku \ud83d\ude42<\/li><li>Klikamy zielony przycisk Install. (Na powy\u017cszym screenie Lombok jest ju\u017c zainstalowany, dlatego jest pod nim szary przycisk Installed)<\/li><\/ul>\n\n\n\n<p>Potem restartujemy Intellij IDEA. Od tego momentu mo\u017cemy cieszy\u0107 si\u0119 pe\u0142n\u0105 moc\u0105 Lomboka. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Person &#8211; ma\u0142o logiki du\u017co boilerplate&#8217;u <\/h2>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bf57\"  tabindex=\"0\" title=\"Kod do optymalizacji\"    >Kod do optymalizacji<\/span><div id=\"target-id6a7c5dc14bf57\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Objects<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary, <span class=\"kw4\">int<\/span> age<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">date<\/span> <span class=\"sy0\">=<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">salary<\/span> <span class=\"sy0\">=<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">age<\/span> <span class=\"sy0\">=<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getName<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setName<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getSurname<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setSurname<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> getDate<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setDate<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">date<\/span> <span class=\"sy0\">=<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getPESEL<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setPESEL<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> getSalary<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setSalary<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">salary<\/span> <span class=\"sy0\">=<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> getAge<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setAge<span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> age<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">age<\/span> <span class=\"sy0\">=<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> equals<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+object\"><span class=\"kw3\">Object<\/span><\/a> o<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span> <span class=\"sy0\">==<\/span> o<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>o <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> getClass<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> o.<span class=\"me1\">getClass<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Person person <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>Person<span class=\"br0\">&#41;<\/span> o<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age <span class=\"sy0\">==<\/span> person.<span class=\"me1\">age<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>name, person.<span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>surname, person.<span class=\"me1\">surname<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>date, person.<span class=\"me1\">date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>PESEL, person.<span class=\"me1\">PESEL<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>salary, person.<span class=\"me1\">salary<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> hashCode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Objects.<span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span>name, surname, date, PESEL, salary, age<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> toString<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Person{&quot;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;name='&quot;<\/span> <span class=\"sy0\">+<\/span> name <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, surname='&quot;<\/span> <span class=\"sy0\">+<\/span> surname <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, date=&quot;<\/span> <span class=\"sy0\">+<\/span> date <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, PESEL='&quot;<\/span> <span class=\"sy0\">+<\/span> PESEL <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, salary=&quot;<\/span> <span class=\"sy0\">+<\/span> salary <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, age=&quot;<\/span> <span class=\"sy0\">+<\/span> age <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'}'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<p>Kod, kt\u00f3ry b\u0119dziemy optymalizowali jest taaaaki d\u0142ugi, \u017ce musia\u0142em umie\u015bci\u0107 go w postaci rozwijanego bloczka tekstu \ud83d\ude42 Je\u015bli go chcesz zobaczy\u0107, rozwi\u0144 prosz\u0119&nbsp;kod za pomoc\u0105 klikni\u0119cia w powy\u017cszy link <em>Kod do optymalizacji.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lombok &#8211; optymalizacja klasy Person<\/h2>\n\n\n\n<p class=\"example_code\">Klasa Person, kt\u00f3r\u0105 si\u0119 zajmiemy, ma 110 linijek kodu. Du\u017co zajmuj\u0105 konstruktory, metody <em>toString, equals, hashCode. <\/em>Ale zdecydowanie najwi\u0119cej miejsca poch\u0142aniaj\u0105 <em>gettery i settery. <\/em>To nimi zajmiemy si\u0119 na samym pocz\u0105tku. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; optymalizacja getter\u00f3w &#8211; adnotacja @Getter<\/h3>\n\n\n\n<p class=\"example_code\">Adnotacja <em>@Getter<\/em> umieszczona nad klas\u0105 automatycznie generuje gettery dla wszystkich atrybut\u00f3w klasy. Przyk\u0142ad jej u\u017cycia znajduje si\u0119&nbsp;poni\u017cej:<\/p>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bf8e\"  tabindex=\"0\" title=\"Kod po I optymalizacji - adnotacja @Getter\"    >Kod po I optymalizacji - adnotacja @Getter<\/span><div id=\"target-id6a7c5dc14bf8e\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.Getter<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Objects<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Getter<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary, <span class=\"kw4\">int<\/span> age<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">date<\/span> <span class=\"sy0\">=<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">salary<\/span> <span class=\"sy0\">=<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">age<\/span> <span class=\"sy0\">=<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setName<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setSurname<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setDate<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">date<\/span> <span class=\"sy0\">=<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setPESEL<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setSalary<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">salary<\/span> <span class=\"sy0\">=<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setAge<span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> age<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">age<\/span> <span class=\"sy0\">=<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> equals<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+object\"><span class=\"kw3\">Object<\/span><\/a> o<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span> <span class=\"sy0\">==<\/span> o<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>o <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> getClass<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> o.<span class=\"me1\">getClass<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Person person <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>Person<span class=\"br0\">&#41;<\/span> o<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age <span class=\"sy0\">==<\/span> person.<span class=\"me1\">age<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>name, person.<span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>surname, person.<span class=\"me1\">surname<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>date, person.<span class=\"me1\">date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>PESEL, person.<span class=\"me1\">PESEL<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>salary, person.<span class=\"me1\">salary<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> hashCode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Objects.<span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span>name, surname, date, PESEL, salary, age<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> toString<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Person{&quot;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;name='&quot;<\/span> <span class=\"sy0\">+<\/span> name <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, surname='&quot;<\/span> <span class=\"sy0\">+<\/span> surname <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, date=&quot;<\/span> <span class=\"sy0\">+<\/span> date <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, PESEL='&quot;<\/span> <span class=\"sy0\">+<\/span> PESEL <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, salary=&quot;<\/span> <span class=\"sy0\">+<\/span> salary <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, age=&quot;<\/span> <span class=\"sy0\">+<\/span> age <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'}'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<p>Co zyskali\u015bmy? Ilo\u015b\u0107 linijek spad\u0142a ze 110 do 89. Jest to spadek <strong>o 20%. <\/strong>Prawda, \u017ce taki kod jest ju\u017c nieco czytelniejszy? Za chwilk\u0119 w podobny spos\u00f3b zrobimy porz\u0105dek z setterami \ud83d\ude42 <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; optymalizacja setter\u00f3w &#8211; adnotacja @Setter<\/h3>\n\n\n\n<p class=\"example_code\">Na logik\u0119, skoro gettery mo\u017cna wygenerowa\u0107 za pomoc\u0105 adnotacji <em>@Getter,<\/em> do do stworzenia setter\u00f3w b\u0119dzie s\u0142u\u017cy\u0142a adnotacja <em>@Setter.<\/em> Poni\u017cej znajduje si\u0119 przyk\u0142ad:<\/p>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bfa8\"  tabindex=\"0\" title=\"Kod po II optymalizacji - adnotacja @Setter\"    >Kod po II optymalizacji - adnotacja @Setter<\/span><div id=\"target-id6a7c5dc14bfa8\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.Getter<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.Setter<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Objects<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Getter<br \/>\n@Setter<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary, <span class=\"kw4\">int<\/span> age<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">date<\/span> <span class=\"sy0\">=<\/span> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">salary<\/span> <span class=\"sy0\">=<\/span> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">age<\/span> <span class=\"sy0\">=<\/span> age<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> equals<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+object\"><span class=\"kw3\">Object<\/span><\/a> o<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span> <span class=\"sy0\">==<\/span> o<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>o <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> getClass<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> o.<span class=\"me1\">getClass<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Person person <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>Person<span class=\"br0\">&#41;<\/span> o<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age <span class=\"sy0\">==<\/span> person.<span class=\"me1\">age<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>name, person.<span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>surname, person.<span class=\"me1\">surname<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>date, person.<span class=\"me1\">date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>PESEL, person.<span class=\"me1\">PESEL<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>salary, person.<span class=\"me1\">salary<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> hashCode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Objects.<span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span>name, surname, date, PESEL, salary, age<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> toString<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Person{&quot;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;name='&quot;<\/span> <span class=\"sy0\">+<\/span> name <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, surname='&quot;<\/span> <span class=\"sy0\">+<\/span> surname <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, date=&quot;<\/span> <span class=\"sy0\">+<\/span> date <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, PESEL='&quot;<\/span> <span class=\"sy0\">+<\/span> PESEL <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, salary=&quot;<\/span> <span class=\"sy0\">+<\/span> salary <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, age=&quot;<\/span> <span class=\"sy0\">+<\/span> age <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'}'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<p>Nasz kod ma ju\u017c tylko 67. Linijki. To niemal<strong> 50% mniej <\/strong>ni\u017c kod na samym pocz\u0105tku. A to jeszcze nie koniec optymalizacji!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; optymalizacja getter\u00f3w i setter\u00f3w &#8211; adnotacja @Data<\/h3>\n\n\n\n<p class=\"example_code\">Je\u015bli potrzebujemy zar\u00f3wno getter\u00f3w jak i setter\u00f3w, zamiast dw\u00f3ch adnotacji: @Getter i @Setter, mo\u017cemy zastosowa\u0107 pojedyncz\u0105 adnotacj\u0119 <em>@Data<\/em>. Nie b\u0119d\u0119 wkleja\u0142 w tym miejscu przyk\u0142adu kodu z t\u0105 zamian\u0105. Zauwa\u017cysz j\u0105 w kolejnych listingach, w kt\u00f3rych b\u0119d\u0119 pokazywa\u0142 jak zoptymalizowa\u0107 konstruktory.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; optymalizacja konstruktor\u00f3w &#8211; @NoArgsConstructor i @AllArgsConstructor<\/h3>\n\n\n\n<p class=\"example_code\">Adnotacja <em>@NoArgsConstructor<\/em> generuje konstruktor, kt\u00f3ry nie przyjmuje \u017cadnych argument\u00f3w. Natomiast <em>@AllArgsConstructor<\/em> generuje konstruktor kt\u00f3ry jako parametry przyjmuje wszystkie atrybuty klasy. Przyk\u0142ad ich u\u017cycia znajdziesz poni\u017cej:<\/p>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bfbc\"  tabindex=\"0\" title=\"Kod po IV optymalizacji - RequiredArgsConstructor\"    >Kod po IV optymalizacji - RequiredArgsConstructor<\/span><div id=\"target-id6a7c5dc14bfbc\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.*<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Objects<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Data<br \/>\n@NoArgsConstructor<br \/>\n@AllArgsConstructor<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> Person<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname, <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">name<\/span> <span class=\"sy0\">=<\/span> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">surname<\/span> <span class=\"sy0\">=<\/span> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">PESEL<\/span> <span class=\"sy0\">=<\/span> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> equals<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+object\"><span class=\"kw3\">Object<\/span><\/a> o<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span> <span class=\"sy0\">==<\/span> o<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>o <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> getClass<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> o.<span class=\"me1\">getClass<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Person person <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>Person<span class=\"br0\">&#41;<\/span> o<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age <span class=\"sy0\">==<\/span> person.<span class=\"me1\">age<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>name, person.<span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>surname, person.<span class=\"me1\">surname<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>date, person.<span class=\"me1\">date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>PESEL, person.<span class=\"me1\">PESEL<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>salary, person.<span class=\"me1\">salary<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> hashCode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Objects.<span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span>name, surname, date, PESEL, salary, age<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> toString<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Person{&quot;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;name='&quot;<\/span> <span class=\"sy0\">+<\/span> name <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, surname='&quot;<\/span> <span class=\"sy0\">+<\/span> surname <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, date=&quot;<\/span> <span class=\"sy0\">+<\/span> date <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, PESEL='&quot;<\/span> <span class=\"sy0\">+<\/span> PESEL <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, salary=&quot;<\/span> <span class=\"sy0\">+<\/span> salary <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, age=&quot;<\/span> <span class=\"sy0\">+<\/span> age <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'}'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; @RequiredArgsConstructor &#8211; w sytuacji, gdy potrzebujemy konkretnego konstruktora<\/h3>\n\n\n\n<p class=\"example_code\">Mo\u017cemy wygenerowa\u0107 konstruktor bezargumentowy i konstruktor, kt\u00f3ry przyjmuje jako argumenty wszystkie atrybuty klasy. A co zrobi\u0107 w sytuacji, gdy chcemy aby w konstruktorze by\u0142y inicjowane tylko niekt\u00f3re pola? Np.: name, surname i PESEL? Z pomoc\u0105&nbsp;przychodzi nam <em>@RequiredArgsConstructor<\/em>. Pola kt\u00f3re chcemy umie\u015bci\u0107 w takim konstruktorze oznaczamy adnotacj\u0105 <em>@NonNull.<\/em> Przyk\u0142ad znajduje si\u0119 poni\u017cej:<\/p>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bfce\"  tabindex=\"0\" title=\"Kod po IV optymalizacji - RequiredArgsConstructor\"    >Kod po IV optymalizacji - RequiredArgsConstructor<\/span><div id=\"target-id6a7c5dc14bfce\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.*<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Objects<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Data<br \/>\n@NoArgsConstructor<br \/>\n@AllArgsConstructor<br \/>\n@RequiredArgsConstructor<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">boolean<\/span> equals<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+object\"><span class=\"kw3\">Object<\/span><\/a> o<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span> <span class=\"sy0\">==<\/span> o<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>o <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> getClass<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">!=<\/span> o.<span class=\"me1\">getClass<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">return<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Person person <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>Person<span class=\"br0\">&#41;<\/span> o<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> age <span class=\"sy0\">==<\/span> person.<span class=\"me1\">age<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>name, person.<span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>surname, person.<span class=\"me1\">surname<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>date, person.<span class=\"me1\">date<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>PESEL, person.<span class=\"me1\">PESEL<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&amp;<\/span>amp<span class=\"sy0\">;&amp;<\/span>amp<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Objects.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span>salary, person.<span class=\"me1\">salary<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <span class=\"kw4\">int<\/span> hashCode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Objects.<span class=\"me1\">hash<\/span><span class=\"br0\">&#40;<\/span>name, surname, date, PESEL, salary, age<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; @Override<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> toString<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">&quot;Person{&quot;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;name='&quot;<\/span> <span class=\"sy0\">+<\/span> name <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, surname='&quot;<\/span> <span class=\"sy0\">+<\/span> surname <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, date=&quot;<\/span> <span class=\"sy0\">+<\/span> date <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, PESEL='&quot;<\/span> <span class=\"sy0\">+<\/span> PESEL <span class=\"sy0\">+<\/span> <span class=\"st0\">'<span class=\"es0\">\\'<\/span>'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, salary=&quot;<\/span> <span class=\"sy0\">+<\/span> salary <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;, age=&quot;<\/span> <span class=\"sy0\">+<\/span> age <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'}'<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Lombok &#8211; @Equals i @Hashcode<\/h3>\n\n\n\n<p class=\"example_code\">Co nam jeszcze tak bru\u017adzi? Metody <em>equals <\/em>i <em>hashcode<\/em> i <em>toString<\/em>. Dwie pierwsze metody mo\u017cemy wygenerowa\u0107 za pomoc\u0105 oddzielnych adnotacji <em>@Equals<\/em> i <em>@Hashcode<\/em>. Podobnie jak w przypadku getter\u00f3w i setter\u00f3w, mo\u017cemy pos\u0142u\u017cy\u0107 si\u0119 tak\u017ce pojedyncz\u0105 adnotacj\u0105 <em>@EqualsAndHashcode<\/em>. Metod\u0119 <em>toString<\/em> generujemy natomiast za pomoc\u0105 adnotacji o tej samej nazwie jak nazwa metody, czyli <em>@ToString<\/em><\/p>\n\n\n\n<pre><span class=\"collapseomatic \" id=\"id6a7c5dc14bfe0\"  tabindex=\"0\" title=\"Kod po V optymalizacji - equals, hashcode i toString\"    >Kod po V optymalizacji - equals, hashcode i toString<\/span><div id=\"target-id6a7c5dc14bfe0\" class=\"collapseomatic_content \">\n\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:90%;height:100%;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">package<\/span> <span class=\"co2\">pl.kompikownia.lombokexample<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">lombok.*<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.math.BigDecimal<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">import<\/span> <span class=\"co2\">java.util.Date<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n@Data<br \/>\n@NoArgsConstructor<br \/>\n@AllArgsConstructor<br \/>\n@RequiredArgsConstructor<br \/>\n@EqualsAndHashCode<br \/>\n@ToString<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> Person <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> name<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> surname<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+date\"><span class=\"kw3\">Date<\/span><\/a> date<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; @NonNull<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> PESEL<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal\"><span class=\"kw3\">BigDecimal<\/span><\/a> salary<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">private<\/span> <span class=\"kw4\">int<\/span> age<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/div>\n<\/pre>\n\n\n\n<p>Odnie\u015bli\u015bmy sukces! Nasz kod ma teraz <strong>tylko 24 linijki <\/strong>i mie\u015bci si\u0119 na jednym ekranie. To sprawia, \u017ce wystarczy tylko jeden rzut oka i wiemy wszystko o klasie! <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowuj\u0105c<\/h2>\n\n\n\n<p>Wi\u0119cej o bibliotece <strong>Lombok<\/strong> mo\u017cesz znale\u017a\u0107 w dokumentacji. Powy\u017cej wskaza\u0142em tylko podstawowe adnotacje, kt\u00f3re u\u017cywane s\u0105 najcz\u0119\u015bciej. Lombok natomiast posiada o wiele wi\u0119cej mo\u017cliwo\u015bci. Niekt\u00f3re adnotacje z powy\u017cej wymienionych mo\u017cesz tak\u017ce &#8222;konfigurowa\u0107&#8221;. Mo\u017cesz np.: doda\u0107 nad atrybutem adnotacj\u0119 <em>@Setter(AccessLevel.PRIVATE)<\/em>, dzi\u0119ki temu setter do tego konkretnego atrybutu nie b\u0119dzie dost\u0119pny na zewn\u0105trz klasy. Po szczeg\u00f3\u0142y odsy\u0142am do dokumentacji <a href=\"https:\/\/projectlombok.org\">dost\u0119pnej na tej stronie.<\/a><\/p>\n\n\n\n<p>Dzi\u0119ki za lektur\u0119 \ud83d\ude42 Je\u015bli masz jakie\u015b pytania &#8211; \u015bmia\u0142o, pisz komentarz. Zach\u0119cam ci\u0119 r\u00f3wnie\u017c do polubienia mojego <a href=\"https:\/\/www.facebook.com\/kompikownia\/\">fanpage&#8217;a<\/a> na Facebooku i w\u0142\u0105czenia powiadomie\u0144 klikaj\u0105c ten dzwoneczek po lewej stronie. Do zobaczenia \ud83d\ude42 <\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania:<\/span> <span class=\"rt-time\">9<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> Witaj w trzeciej cz\u0119\u015bci serii Umiej\u0119tno\u015b\u0107 obs\u0142ugi IDE. Czytaj\u0105c dzisiejszy artyku\u0142 nauczysz si\u0119, jak w prosty i elegancki spos\u00f3b mo\u017cesz pozby\u0107 si\u0119 boilerplate code. Dzi\u0119ki temu tw\u00f3j kod b\u0119dzie kr\u00f3tszy, &#8230;<\/p>\n","protected":false},"author":1,"featured_media":2245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[77,72],"tags":[83,76,84,73,82,86,85],"_links":{"self":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2171"}],"collection":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/comments?post=2171"}],"version-history":[{"count":69,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2171\/revisions"}],"predecessor-version":[{"id":2244,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/posts\/2171\/revisions\/2244"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media\/2245"}],"wp:attachment":[{"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/media?parent=2171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/categories?post=2171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kompikownia.pl\/index.php\/wp-json\/wp\/v2\/tags?post=2171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}