似乎
@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
注释的域类。
根据文档, 必需的参数是最终字段和带有@NonNull 等约束的字段。
您需要将用户名设置为@NonNull
@NonNull private String username;
你也需要将它们定为最终版本。
对于未来的读者来说,还值得注意的是,@Data还提供了@RequiredArgsConstructor,因此没有必要使用这两个注释:)
你在IntelliJ中安装了Lombok插件吗?
如果没有的话
File -> Settings -> Plugins: Search for Lombok (CodeStream) version.
重新启动IDE,应该就可以修复了。
双重检查:
Annotation Processors
File -> Settings: Search for Annotation Processors
@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;
尝试将项目/模块 JDK 更改为 1.8。
项目结构 -> 项目设置 -> 项目 SDK 和项目语言级别
@RequiredArgsConstructor 注释的参数字段必须是
final
。所以这个修复会起作用:
private final String username;
当
final
关键字遗漏时,IDE IntelliJ 会将变量设为灰色(非活动状态),这对于检测此类错误非常有帮助。
如果所有 lombok 注释都不起作用,请尝试从 lombok 下载“安装程序”(您必须指出您的 IDE 在哪里),这解决了我的问题 这是java的安装程序 https://projectlombok.org/setup/javac