lombokのデフォルト値。コンストラクタとビルダーの両方でデフォルトを開始する方法
2023-08-30 02:41:13
質問
あるオブジェクト
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
private int id;
private String nick;
private boolean isEmailConfirmed = true;
}
そして、2つの方法で初期化します。
UserInfo ui = new UserInfo();
UserInfo ui2 = UserInfo.builder().build();
System.out.println("ui: " + ui.isEmailConfirmed());
System.out.println("ui2: " + ui2.isEmailConfirmed());
以下は出力です。
ui: true
ui2: false
builderはデフォルト値を取得しないようです。私は
@Builder.Default
アノテーションを追加すると、オブジェクトは次のようになります。
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
private int id;
private String nick;
@Builder.Default
private boolean isEmailConfirmed = true;
}
以下はコンソール出力です。
ui: false
ui2: true
どうすれば、両方とも
true
?
どのように解決するのですか?
私の推測では、(コードを削除していない限り)それは不可能です。しかし、必要なコンストラクタを実装するだけではどうでしょうか。Lombok はあなたの生活を楽にするためのものであり、Lombok で動作しないものは、昔ながらの方法で行えばよいのです。
@Data
@Builder
@AllArgsConstructor
public class UserInfo {
private int id;
private String nick;
@Builder.Default
private boolean isEmailConfirmed = true;
public UserInfo(){
isEmailConfirmed = true;
}
}
コンソール出力です。
ui: true
ui2: true
更新
2021年1月現在。
このバグは Lombok では修正されたようです。
少なくとも生成されたコンストラクタでは修正されているようです。ただし、まだ
同様の問題が
を混ぜるときに
Builder.Default
と明示的なコンストラクタが混在する場合です。
関連
-
プロジェクトの依存関係を解決できない。
-
Uncaught ReferenceError: は定義されていません。
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
配列定数は初期化子でのみ使用可能です。
-
FindBugの使用概要
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] Lombokの@BuilderとJPAのデフォルトコンストラクタ
-
[解決済み] Lombokの@Builderで必要な引数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
型に解決できない エラー解決
-
Javaジェネリックを1つの記事で
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
ジャバアレイ
-
FindBugの使用概要
-
アノテーション「@Retention」の役割
-
Java基礎編 - オブジェクト指向
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
java 365*1000*60*60*24 計算問題