Lombok:RequiredArgsConstructor不工作

roz*_*rro 11 java lombok

它似乎@RequiredArgsConstructor不适用于下面的代码.为什么?

import java.io.Serializable;

import lombok.Data;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
public class User implements Serializable {

    private String username;

    /*public User(String username) {
        this.username = username;
    }*/

    private static final long serialVersionUID = 8043545738660721361L;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation problem: 
    The constructor User(String) is undefined
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它似乎适用于其他没有构造函数定义但是使用@RequiredArgsConstructor注释的域类.

a3.*_*ity 26

根据文档,必需参数是最终字段和具有约束的字段,例如@NonNull.

您需要将用户名设为@NonNull

@NonNull private String username;
Run Code Online (Sandbox Code Playgroud)

而你也需要让它们成为决赛.

  • 和`final`字段!不要忘记`final`字段.`final`字段通常不会得到太多的爱(*故意重复*= D) (9认同)

adr*_*ard 10

对于未来的读者,还值得注意的是@Data还提供了@RequiredArgsConstructor,因此不需要同时使用这两个注释:)

  • 当您将“@Data”与其他构造函数注释(例如“@NoArgsConstructor”)结合使用时,“@RequiredArgsConstructor”将不会自动生成。 (5认同)

HA *_*A S 5

您是否在 IntelliJ 中安装了 Lombok 插件?

如果没有那么

File -> Settings -> Plugins: Search for Lombok (CodeStream) version.

重新启动IDE,它应该被修复。

再检查一遍:

  • 您已经使用 Maven 或 Gradle 安装了 Lombok 库。
  • Annotation Processors从 IntelliJ IDE启用File -> Settings: Search for Annotation Processors