我正在嘗試使用 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
uj5u.com熱心網友回復:
根據這個 records從龍目島版本支持v1.18.20
自上一版 v1.18.20 起支持記錄上的 @Builder。您使用的是哪個版本?請注意,這也可能只是 IDE 問題。如果您使用的是 IntelliJ,則可能尚不支持它。
可能是 IntelliJ 問題......嘗試在沒有 IntelliJ 自動完成的情況下撰寫代碼,看看它是否編譯......如果它......它是一個 IntelliJ 問題......如果它沒有,你的代碼有問題。
uj5u.com熱心網友回復:
嘗試將@Data與@Builder 一起使用。像這樣的東西:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MyClass {
}
理想情況下,您應該能夠做到這一點:
myClass.builder().build();
假設您的模型、版本控制和依賴項的其他一切正常,這應該可以作業。
除此之外,您為什么需要定義自己的吸氣劑?龍目島不會為你做那件事嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346491.html
下一篇:為什么在嘗試使用JpaRepository中的save()方法插入新記錄時出現“位于或接近“用戶”的語法錯誤”錯誤?
