zoukankan      html  css  js  c++  java
  • @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 }
     
  • 相关阅读:
    解决无法连接mysql问题
    nodejs基础(二)
    JS面试题
    node初学者笔记
    nodejs安装、环境配置和测试
    Linux常用命令笔记
    MangoDb的安装及使用
    Redis安装、命令以及设置密码遇到的问题
    测试端口通不通问题
    发布版本Debug和Release的区别
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/9179878.html
Copyright © 2011-2022 走看看