覚えたら書くスマートフォン用の表示で見る覚えたら書くIT関係のデベロッパとして日々覚えたことを書き残したいです。JavaLombokの@Data(lombok.Data)アノテーションの利用サンプルです。@Dataアノテーションにより、JavaBeansを簡単に記述することができます。以下記事に続いて@Dataを利用したコードをもう少し色々書いてみました。getter/setterが防御的コピーをしているかどうかの確認をしています。配列と@Data配列をメンバに持つクラスに@Dataを付与するとどうなるのかを確認してみました。value])実行結果から見てわかりますが、配列のメンバに対するgetter/setterで防御的コピーは行われていません。そのため、セット元の配列内の値に変更を加えると、Beanクラス内のメンバの値も変更されます。■実際に生成されているソースコード実際に生成されているソースコードをdelombokを使って確認してみました。防御的コピーが行われていないことが分かります。}}Collectionと@DataList型の値とMap型の値をメンバに持つクラスに@Dataを付与するとどうなるのかを確認してみました。結論から言うとList型の値とMapの値のいずれも防御的コピーは行われません。そのため元のListやMapを操作することでBeanクラス内の値を変更することができます。200=data2})■実際に生成されているソースコード実際に生成されているソースコードをdelombokを使って確認してみました。}}コンストラクタで渡される値は防御的コピーされているか?getter/setterでは防御的コピーは行われていないことが分かりました。それでは、finalのメンバが存在する場合に自動的に作成される引数付きコンストラクタでは防御的コピーはされているのかを確認してみます。元の値を変更することで、Beanクラス内の値を変更できています。■実際に生成されているソースコード実際に生成されているソースコードをdelombokを使って確認してみました。Genericsが絡んだ独自クラス防御的コピーはあまり関係ないですが、Genericsを利用した独自クラスを定義して、そのクラスをメンバに持つクラスに@Dataを付与してみました。key3=100}))■実際に生成されているソースコード実際に生成されているソースコードをdelombokを使って確認してみました。読者になるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。