[解決済み] Lombok toBuilder()メソッドは、フィールドのディープコピーを作成するか?
2022-02-18 15:26:26
質問
を使っています。
toBuilder()
オブジェクトのインスタンスでビルダーのインスタンスを作成し、ビルドメソッドで新しいインスタンスを作成します。元のオブジェクトはリストを持っていますが、新しいオブジェクトは同じリストへの参照またはそのコピーを持つのでしょうか?
@Getter
@Setter
@AllArgsConstructor
public class Library {
private List<Book> books;
@Builder(toBuilder=true)
public Library(final List<Book> books){
this.books = books;
}
}
Library lib2 = lib1.toBuilder().build();
lib2 の書籍は lib1 の書籍と同じリストを参照するのでしょうか?
解決方法は?
そうです。
@Builder(toBuilder=true)
アノテーションはオブジェクトのディープコピーを実行せず、フィールドの参照のみをコピーします。
List<Book> books = new ArrayList<>();
Library one = new Library(books);
Library two = one.toBuilder().build();
System.out.println(one.getBooks() == two.getBooks()); // true, same reference
関連
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み] オブジェクトのディープコピーはどのように作るのですか?
-
[解決済み] List<SubClass> を List<BaseClass> にキャストする最も効率的な方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み】koch snowflake java recursion