I'm getting null pointer exception caused by:
Caused by: java.lang.UnsupportedOperationException: No accessor to set property private final java.lang.String
After some research, I realized that it's happening because my class is annotated with @Data and I have a final field defined within it.
@Data
@Builder
public class ClassA {
private String id;
private final String name = "Name A";
}
I'm creating objects of ClassA here:
public ClassA converter(InputData input) {
if (input == null || input.getIdValue() == null) {
return null;
}
return ClassA.builder()
.id(input.getIdValue())
.build();
}
Any suggestion on how to handle this problem?
The approach below fixes the issue and also makes more sense in terms of business perspective, which is not in discussion here.
@Data
@Builder
public class ClassA {
private String id;
private String name;
}
public ClassA converter(InputData input) {
private static final String NAME = "Name";
if (input == null || input.getIdValue() == null) {
return null;
}
return ClassA.builder()
.id(input.getIdValue())
.name(NAME)
.build();
}