如何避免由于带有 final 字段的 class 中的 lombok @Data 注释导致的 NPE?
How to avoid NPE due to lombok @Data annotation in a class with final field?
我收到由以下原因引起的空指针异常:
Caused by: java.lang.UnsupportedOperationException: No accessor to set property private final java.lang.String
经过一些研究,我意识到这是因为我的 class 被 @Data 注释并且我在其中定义了一个 final 字段。
@Data
@Builder
public class ClassA {
private String id;
private final String name = "Name A";
}
我在这里创建 ClassA 的对象:
public ClassA converter(InputData input) {
if (input == null || input.getIdValue() == null) {
return null;
}
return ClassA.builder()
.id(input.getIdValue())
.build();
}
关于如何处理这个问题有什么建议吗?
下面的方法解决了这个问题,而且从业务角度来看也更有意义,这里不讨论。
@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();
}
我收到由以下原因引起的空指针异常:
Caused by: java.lang.UnsupportedOperationException: No accessor to set property private final java.lang.String
经过一些研究,我意识到这是因为我的 class 被 @Data 注释并且我在其中定义了一个 final 字段。
@Data
@Builder
public class ClassA {
private String id;
private final String name = "Name A";
}
我在这里创建 ClassA 的对象:
public ClassA converter(InputData input) {
if (input == null || input.getIdValue() == null) {
return null;
}
return ClassA.builder()
.id(input.getIdValue())
.build();
}
关于如何处理这个问题有什么建议吗?
下面的方法解决了这个问题,而且从业务角度来看也更有意义,这里不讨论。
@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();
}