回答編集履歴
1
日本語としておかしかった部分を修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
Javaに限ってのお話ですが、他の方が答えられているように、大半は、JavaBeansの仕様に従っているだけだと思います。
|
2
|
-
他のオブジェクトから操作されたくないような場合は、[この記事](http://qiita.com/Yahagi_pg/items/661197a5f8600fd9958e#getterとsetterはオブジェクト指向の基本であり必ず利用すべきである)にあるように、単純に薄っぺらいラッパーではなく、
|
2
|
+
他のオブジェクトから操作されたくないような場合は、getterはまだしも、setterに関しては、[この記事](http://qiita.com/Yahagi_pg/items/661197a5f8600fd9958e#getterとsetterはオブジェクト指向の基本であり必ず利用すべきである)にあるように、単純に薄っぺらいラッパーではなく、別のかたちのメソッドになるように思えます。
|
3
3
|
|
4
4
|
また、インスタンスフィールドを公開しない理由としては、疎結合にするというのもあります。
|
5
5
|
疎結合にすることで、JMockitなどで、クラスをMock化する際に、accessorメソッドがあった方が、Mock化しやすいという利点もありますが、現実には、インスタンスフィールドを直接書き換えるなんて、リフレクションを使わない限りは、初心者くらい(バグ出しそうで、怖くて、普通はやらない)だと思うので、コンストラクターで初期化して、書き換えないような場合はpublic final、リフレクションで初期化してから使われるような場合は、publicにして公開してしまったりしています。
|