UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Java】Lombokでつくったインスタンスをcloneしたい

Lombokを使っていて、あるクラスに@BuilderをつけてBuilderパターンでインスタンス生成した

projectlombok.org

このインスタンスをcloneして、あるプロパティの値だけを上書きしたくなったので方法を調べた

@Builder(toBuilder = true)

@Builderアノテーション@Builder(toBuilder = true)にするだけでできるみたい

これによりtoBuilder()が使えるので、再度Builderの形に戻して、値をセットして、build()を実行する

@Builder(toBuilder = true)
public class Hotel {
  private String name;
}
Hotel hotel1 = Hotel.builder().name("ホテル1").build();
Hotel hotel2 = hotel1.toBuilder().name("ホテル2").build();