1. ホーム
  2. java

[解決済み] lombokを使用して既存のオブジェクトからオブジェクトを構築する

2022-03-09 16:40:15

質問

例えば、次のようなlombokアノテーションのついたクラスがあるとします。

@Builder
class Band {
   String name;
   String type;
}

できることは分かっている。

Band rollingStones = Band.builder().name("Rolling Stones").type("Rock Band").build();

既存のオブジェクトをテンプレートとしてFooのオブジェクトを作成し、そのプロパティの一つを変更する簡単な方法はありますか?

のようなものです。

Band nirvana = Band.builder(rollingStones).name("Nirvana");

lombokのドキュメントには、このような記述は見当たりません。

どのように解決するのですか?

を使用することができます。 toBuilder パラメータを使用すると、インスタンスに toBuilder() メソッドを使用します。

@Builder(toBuilder=true)
class Foo {
   int x;
   ...
}

Foo f0 = Foo.builder().build();
Foo f1 = f0.toBuilder().x(42).build();

から ドキュメント :

Builderを使って自分のクラスのインスタンスを生成するビルダーを生成する場合(自分の型を返さないメソッドに@Builderを追加しない限り、常にそうなる)、@Builder(toBuilder = true)を使って、toBuilder()というインスタンスメソッドを自分のクラスに生成することができます;これはこのインスタンスのすべての値から始まる新しいビルダーを作成します。

免責事項:私はlombokの開発者です。