Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lombok @Builder inheritance workaround

Tags:

java

lombok

Lombok @Builder doesn't work for inheritance use cases:

For example

class Foo{  protected int xyz1;  .....  protected String xyz7; }   class Bar extends Foo{  } 

For given use case Lombok will not be able to generate methods to set value of parameter defined in Foo class.

A workaround for this is:

  1. Manual creating constructor of Bar.
  2. Putting a Builder annotation on that constructor.

Is there a better workaround ?

like image 969
Vivek Goel Avatar asked Jul 27 '15 22:07

Vivek Goel


1 Answers

Lombok has introduced experimental features with version: 1.18.2 for inheritance issues faced with Builder annotation, and can be resolved with @SuperBuilder annotation as below.

@SuperBuilder public class ParentClass {     private final String a;     private final String b; }  @SuperBuilder public class ChildClass extends ParentClass{     private final String c; } 

Now, one can use Builder class as below (that was not possible with @Builder annotation)

ChildClass.builder().a("testA").b("testB").c("testC").build(); 
like image 122
Amit Kaneria Avatar answered Sep 28 '22 08:09

Amit Kaneria