簡體   English   中英

如何避免由於 lombok @Data 注釋在帶有 final 字段的 class 中的 NPE?

[英]How to avoid NPE due to lombok @Data annotation in a class with final field?

我收到 null 指針異常,原因是:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM