龙目岛:RequiredArgsConstructor 不工作
Lombok: RequiredArgsConstructor is not working
似乎 @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
出于某种原因,它似乎确实适用于其他域 class,其中没有定义构造函数,而是使用了 @RequiredArgsConstructor
注释。
根据Documentation,
必需的参数是最终字段和带有约束的字段,例如 @NonNull.
您需要将用户名设为@NonNull
@NonNull private String username;
而且您还需要将它们设为最终版本。
对于未来的读者来说,@Data also provides @RequiredArgsConstructor 也值得注意,因此没有必要同时使用这两个注释:)
您是否在 IntelliJ 中安装了 Lombok 插件?
如果没有那么
File -> Settings -> Plugins: Search for Lombok (CodeStream) version.
重新启动IDE,应该可以解决。
仔细检查:
- 您使用 Maven 或 Gradle 安装了 Lombok 库。
- 已启用
Annotation Processors
来自 IntelliJ IDE 来自 File -> Settings: Search for Annotation Processors
尝试将 project/module JDK 更改为 1.8。
项目结构->项目设置->项目SDK和项目语言级别
@RequiredArgsConstructor 注释的参数字段必须是 final
。所以此修复程序将起作用:
private final String username;
IDE IntelliJ 在 final
关键字丢失时将变量设为灰色(非活动状态),这对检测此类错误非常有帮助。
@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;
似乎 @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
出于某种原因,它似乎确实适用于其他域 class,其中没有定义构造函数,而是使用了 @RequiredArgsConstructor
注释。
根据Documentation, 必需的参数是最终字段和带有约束的字段,例如 @NonNull.
您需要将用户名设为@NonNull
@NonNull private String username;
而且您还需要将它们设为最终版本。
对于未来的读者来说,@Data also provides @RequiredArgsConstructor 也值得注意,因此没有必要同时使用这两个注释:)
您是否在 IntelliJ 中安装了 Lombok 插件?
如果没有那么
File -> Settings -> Plugins: Search for Lombok (CodeStream) version.
重新启动IDE,应该可以解决。
仔细检查:
- 您使用 Maven 或 Gradle 安装了 Lombok 库。
- 已启用
Annotation Processors
来自 IntelliJ IDE 来自File -> Settings: Search for Annotation Processors
尝试将 project/module JDK 更改为 1.8。
项目结构->项目设置->项目SDK和项目语言级别
@RequiredArgsConstructor 注释的参数字段必须是 final
。所以此修复程序将起作用:
private final String username;
IDE IntelliJ 在 final
关键字丢失时将变量设为灰色(非活动状态),这对检测此类错误非常有帮助。
@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;