@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 }
你投入得越多,就能得到越多得价值