覚えたら書くスマートフォン用の表示で見る覚えたら書くIT関係のデベロッパとして日々覚えたことを書き残したいです。LombokLombokの@Wither(lombok.experimental.Wither)アノテーションの利用サンプルです。Immutableなクラスでは、クラス内のメンバの値を変更したい場合にwithXXXXというメソッドを定義することがあります。withメソッドは、元のインスタンスの内容は変更せず、指定の値を持つ新しいインスタンスを返します。等がこれに該当します)@Witherアノテーションを利用することでこのようなwithメソッドを簡単に定義することができます。基本的に@Valueアノテーションと組み合わせて利用するのが良いと思います。@Witherは所属パッケージが"experimental"になっており、その名の通り実験的なアノテーションです。そのため、今後Lombokのバージョンが上がった際などに仕様が変更される可能性もあると思われます。remarks;}■利用側のコード全メンバへに対するwithメソッドが利用できることが分かります。}}■実行結果withXXXメソッドによって値を変更した場合、戻り値のインスタンスは元のインスタンスとは別物になっていることが分かります。false■実際に生成されるソースコード各メンバに対応するwithメソッドが生成されていることが分かります。}}@Witherをメンバに付与する値の変更を許可するメンバが限定したい状況も考えられます。そのような場合は、@Witherアノテーションを値の変更を許容するメンバに付与します。}}withメソッドのアクセスレベルを制御する@Witherを付与するとデフォルトで生成されるwithメソッドのアクセスレベルはpublicになります。このアクセスレベルを変更したい場合は、パラメータにAccessLevelを指定します。■@Witherを付与したクラスnameに対する@WitherでのアクセスレベルにAccessLevel.PROTECTEDを指定しています。remarks;}■実際に生成されるソースコードwithName(nameに対するwithメソッド)のアクセスレベルがprotectedになっていることが分かります。}}nullの設定を許可しないようにする@Witherを付与して生成されるwithメソッドは、その引数にnullを指定できてしまいます。nullを許可したくない場合は@NonNullを組み合わせましょう。■@Witherを付与したクラスnameに対して@Witherと@NonNullを指定しています。remarks;}■実際に生成されるソースコードwithName(nameに対するwithメソッド)で引数のnullチェックが行われていることが分かります。読者になるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。