@Builder與@NoArgsConstructor | Lombok


一、@Builder與@NoArgsConstructor一起使用存在的問題
 
1 @Data
2 @Builder
3 @NoArgsConstructor
4 public class User {
5     private Long skuId;
6 }

 

編譯上述代碼為拋出如下異常:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project java_base: Compilation failure
[ERROR] /Users/zhangboqing/Software/MyGithub/java_knowledge_sea/java_base/src/main/java/com/zbq/devPlugin/lombok/bean/User.java:[12,1] 無法將類 com.zbq.devPlugin.lombok.bean.User中的構造器 User應用到給定類型;
[ERROR] 需要: 沒有參數
[ERROR] 找到: java.lang.Long,java.lang.String,boolean,java.lang.Boolean,int
[ERROR] 原因: 實際參數列表和形式參數列表長度不同

 

 
二、原因分析
當java bean 中使用@Builder的時,無法添加無參構造器。我覺得可能的原因是,既然使用@Builder了,創建對象,可以通過builder去創建,而不需要new對象,為了防止new 對象而禁止無參構造器的存在(嘻嘻,這只是我的猜測哈)
 
三、如何解決
1.去掉無參構造器
    這樣就可以編譯通過了
2.既然只是編譯階段有問題,那么我們可以通過@Tolerate 注解,讓編譯器不編譯該方法就可以了
1 @Data
2 @Builder
3 public class User {
4  @Tolerate 5     public User() {
6     }
7  
8     private Long skuId;
9 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM