Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
wither vs builder Lombok library

I have started using the Lombok library, and I am unable to figure out the difference between using a wither & a builder.

@Builder
@Wither
public class Sample {
   private int x;
   private int y;
}

Now I can create an object in 2 ways:

Sample s = new Sample().builder()
              .x(10)
              .y(15)
              .build();

OR

Sample s = new Sample()
           .withx(10)
           .withy(10);

What is the difference between the two? Which one should I use?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

@Builder is used to create mutable objects, @Wither for immutables.

Disclosure: I am a lombok developer.

about 4 years ago · Santiago Trujillo Report

0

Generally, the difference is when you build a object with builder(), you must call build() method at last, and before you call build(), all property values are saved in the internal builder object instead of the object your created with new. After you setted all properties and call build(), a new object will be created. See details here: https://projectlombok.org/features/Builder.html . I think the better way for builder pattern is:

Sample s = Sample.builder()
          .x(10)
          .y(15)
          .build();

Because the first Sample object is redundant.

For withers, every time you called withXXX(xxx), a new object is returned, with XXX set to xxx, and all other properties cloned from the object you called wither on (if xxx is different from the original xxx. See details here: https://projectlombok.org/features/experimental/Wither.html). Choose which way, I think it's only depends on your personal habit and your project's code style.

Hope this could help you.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!