[英]Use custom setter in Lombok's builder with superclass
我想在 Lombok 的構建器中使用自定義 setter 並覆蓋 1 個方法,就像這樣
@SuperBuilder
public class User implements Employee {
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
private String username;
private String password;
public static class UserBuilder {
public UserBuilder password(String password) {
this.password = ENCODER.encode(password);
return this;
}
}
}
但我有這個編譯錯誤
Existing Builder must be an abstract static inner class.
與@Builder
, @SuperBuilder
生成兩個構建器類,一個public
類和一個private
類。 兩者都加載了大量的泛型以確保正確的類型推斷。
如果您想向構建器類添加或修改方法,您應該查看未定制的delombok
ed 代碼並從那里復制並粘貼public abstract static class
標頭。 否則,您可能會弄錯泛型,從而導致您無法修復的編譯器錯誤。 還要查看生成的方法的return
類型和語句,以確保正確定義。
@SuperBuilder
文檔也提到了這一點:
由於大量使用泛型,我們強烈建議從未自定義的 delomboked 代碼中復制構建器類定義標頭。
在您的情況下,您必須按如下方式自定義構建器:
public static abstract class UserBuilder<C extends User, B extends User.UserBuilder<C, B>> {
public B password(final int password) {
this.password = ENCODER.encode(password);
return self();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.