我正在尝试使用 Lombok 的 @Builder 实现构建器模式,但它没有检测到任何记录字段:
@Builder(builderMethodName = "internalBuilder")
public record ApiError(String title, Map<String, String> errors) {
public static ApiErrorBuilder builder(String title) {
return internalBuilder().title(title); // Cannot resolve method 'title' in 'ApiErrorBuilder'
}
}
当我将记录转为课程时,一切都按预期进行:
@Builder(builderMethodName = "internalBuilder")
public class ApiError {
private final String title;
private final Map<String, String> errors;
public ApiError(String title, Map<String, String> errors) {
this.title = title;
this.errors = errors;
}
public static ApiErrorBuilder builder(String title) {
return internalBuilder().title(title);
}
// getters
}
发生这种情况是因为 Lombok 目前还不能很好地处理记录吗?
我正在使用 IntelliJ 和 Lombok 1.18.22
根据this
records
从Lombok版本开始支持v1.18.20
自上次版本 v1.18.20 起支持记录上的 @Builder。您使用的是哪个版本? 请注意,这也可能只是 IDE 问题。如果您使用 IntelliJ,可能尚不支持。
可能是 IntelliJ 问题...尝试在没有 IntelliJ 自动完成功能的情况下编写代码,看看它是否可以编译...如果可以...则为 IntelliJ 问题...如果没有,则您的代码有问题。
这是一个 IntelliJ 问题。 升级 IntelliJ 版本解决了这个问题。