An open source library guaranteed to make your life easier

Reduce your boilerplate code in Java classes with project Lombok

Eirini-Eleni Papadopoulou
© Shutterstock / P Phillips  

Project Lombok promises to make your life with Java classes a piece of cake. Get rid of all that getter and setter methods, hashcode, and equals methods with this new open source library.

It is always a reason to rejoice when new Java tools come out and the one I am exploring today is particularly interesting.

Lombok is anw open source library that aims to reduce boilerplate code in Java classes and help you get rid of all the getter and setter methods, hashcode, and equals methods.

How is this achieved, you ask? Well, it is done simply by replacing many of the repetitive pieces of code with simple and concise annotations.

Let’s take a closer look at what Lombok has to offer.

All the annotations you can handle

The features in the current version of Lombok include the following annotations:

@Getter and @Setter – Can be used either at a field or class level. If used at the class level, it will generate getters and setters for all the fields in the class.

@AllArgsConstructor – Generates a public constructor and will construct all the fields declared in your class in the same order as they are defined.

@NoArgsConstructor – Generates a constructor with no arguments. You should note that if the constructor cannot be generated due to the presence of final fields, an error message will occur.

@RequiredArgsConstructor – Generates a constructor with all the final fields in the class. Note that @NoArgsConstructor and @RequiredArgsConstructor can’t be used together and will throw compile time error if you attempt to do so.

@EqualsAndHashCode – Can be used at the class level which will generate implementations for equals(Object other) and hashCode() methods. By default, it will use all the non-static and non-transient fields. If there are certain fields you don’t want to include in the equals or hashCode methods, then you can exclude those specific fields by using @EqualsAndHashCode.Exclude.

@ToString – Can be used to generate the toString() implementation. By default, all non-static fields will be printed. You can specify to include or skip certain fields by using a combination of @ToString.Exclude@ToString.Include, and @ToString(onlyExplicitlyIncluded = true).

@Value – An immutable variant of @Data and is used exactly for this purpose. By default, all the fields are made final and setters are not created.

@Builder – The Builder pattern is a creational design pattern that is used to help build objects in a step-by-step manner. @Builder lets you automatically produce the code required for it.

Logging – @Log creates a log variable with a java.util.logging.Logger.getLogger(LogExample.class.getName()) object. Lombok supports other logging frameworks too, which can be used by annotations like @Log4j@Slf4j etc. You can find the full list of supported frameworks here.

SEE ALSO: Jenkins community survey: Kubernetes usage rises 235% & Java crowned most used language

Getting started

You have several options to get started with Lombok. More specifically:

Eclipse – Download the Lombok .jar file from the official website and run the downloaded lombok.jar file or execute the command in the terminal.

NetBeans – Download the Lombok .jar and add it to the project libraries. Activate the plugin simply by selecting Project Properties -> Build - Compiling -> Enable Annotation Processing in Editor.

IntelliJ – Go to File -> Settings -> Plugins and select Browse Repositories. Search Lombok Plugin and click Install Plugin. Afterwards, just restart the IDE and you’re ready to go.

To find out more about how to install Lombok on other IDEs, head over to the official website and take a look at the ‘Install’ section.

Eirini-Eleni Papadopoulou
Eirini-Eleni Papadopoulou was the editor for Coming from an academic background in East Asian Studies, she decided that it was time to go back to her high-school hobby that was computer science and she dived into the development world. Other hobbies include esports and League of Legends, although she never managed to escape elo hell (yet), and she is a guest writer/analyst for competitive LoL at TGH.

Inline Feedbacks
View all comments