Hello to the overflow community, I am struggling on an inheritance problem with Lombok. I’m trying to add both annotation @AllArgsConstructor
and @NoArgsConstructor
on a child class in order to use the parent lombok constructors but got the error “Duplicate method Child()”.
Parent class:
@ToString
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class Parent {
private String propertyA;
private String propertyB;
}
Child class:
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Child extends Parent {
@Override
public void setPropertyA(String propertyA) {
this.propertyA(StringUtils.upperCase(propertyA));
}
}
The error message:
Duplicate method Child() in type Child Java(67109219)
Thanks to the @rentox98 reply, I understand that the ArgsConstructor on my child class would always be empty, resulting on two identical constructors.
Is there a Lombok way to generate ArgsConstructors on my child class based on the parent lombok ArgsConstructors ?
Advertisement
Answer
In your Child class you have no attributes, so @NoArgsConstructor
and @AllArgsConstructor
are the same and the error occurs.
If you wanted an all-args constructor that would pass the properties to the parent class’s all-args constructor, you’d have to write it yourself; Lombok won’t generate it.
@SuperBuilder
@NoArgsConstructor
public class Child extends Parent {
public Child(String propertyA, String propertyB) {
super(StringUtils.upperCase(propertyA), propertyB);
}
@Override
public void setPropertyA(String propertyA) {
this.propertyA(StringUtils.upperCase(propertyA));
}
}