【问题标题】:Lombok: RequiredArgsConstructor giving error while generating ConstructorLombok:RequiredArgsConstructor 在生成构造函数时给出错误
【发布时间】:2021-04-20 11:10:25
【问题描述】:

似乎@RequiredArgsConstructor 在下面的代码中不起作用。当我生成构造函数时它会抛出错误。为什么会这样?

 import lombok.Data;
    import lombok.NonNull;
    import lombok.RequiredArgsConstructor;
    /**
     * Login response object containing the JWT
     **/
    @Data
    @RequiredArgsConstructor
    public class LoginResult {
        
        @NonNull
        private  String jwt;
    
        public LoginResult(String jwt) {
            this.jwt = jwt;
        }
    }

maven中添加的依赖是

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
        <scope>provided</scope>
</dependency>

错误是 - LoginResult 类型中的重复方法 LoginResult(String)

【问题讨论】:

  • 因为你们都手动添加它并尝试让 lombok 添加它。正如错误消息告诉你的那样。
  • 那么解决方案是什么,在这种情况下我该如何制作参数化构造函数
  • 你已经有了。问题是您正在尝试创建/生成您已经拥有的东西。只需删除您实际键入的构造函数,它就会工作

标签: java spring-boot spring-security-oauth2 lombok


【解决方案1】:

当您使用 Lombok 的 @RequiredArgsConstructor 时,它会为每个需要特殊处理的字段生成一个带有 1 个参数的构造函数。在您的情况下,jwt 字段上的@NonNull 表示jwt 字段需要特殊处理(基本上是空检查)。现在 lombok 添加了一个构造函数,甚至您添加了一个构造函数,因此出现了错误。 Duplicate method LoginResult(String) in type LoginResult

您可以在以下页面https://projectlombok.org/features/constructor 上找到有关它的更多信息。 (添加截图以防将来发生变化)

Solution: 移除你的构造函数,让 Lombok 来做魔法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2023-03-15
    相关资源
    最近更新 更多