Lombok:RequiredArgsConstructor不工作

时间:2016-06-07 05:50:35

标签: 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;
}

我收到错误:

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

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

6 个答案:

答案 0 :(得分:21)

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

您需要将用户名设为@NonNull

@NonNull private String username;

你也需要让它们成为决赛。

答案 1 :(得分:2)

@Data也提供@RequiredArgsConstructor,这对将来的读者也很值得注意,因此不必同时使用两个注释:)

答案 2 :(得分:1)

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

如果不是

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

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

仔细检查:

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

答案 3 :(得分:1)

尝试将项目/模块JDK更改为1.8。

项目结构->项目设置->项目SDK和项目语言级别

答案 4 :(得分:1)

<块引用>

@RequiredArgsConstructor

> Generates a constructor with required arguments. Required arguments
 are final fields and fields with constraints such as @NonNull.
> Complete documentation is found at the project lombok features page
for @Constructor.
> Even though it is not listed, this annotation also has the
 *`onConstructor`* parameter. See the full documentation for more details.

龙目图书馆

要使用@RequiredArgsConstructor,变量必须是final,它会自动在构造函数中创建值

private final String username;

答案 5 :(得分:0)

@RequiredArgsConstructor批注的参数字段必须为final。因此,此修复程序将起作用:

private final String username;

如果缺少final关键字,IDE IntelliJ会将变量显示为灰色(非活动状态),这对于检测这种错误非常有帮助。