@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 }

 

 
posted @ 2018-06-13 20:46  N!CE波  阅读(8456)  评论(0编辑  收藏  举报