回答編集履歴

1

言語実装の問題

2020/08/03 21:29

投稿

xebme
xebme

スコア1083

test CHANGED
@@ -39,3 +39,13 @@
39
39
 
40
40
 
41
41
  変化する部分をミュータブルなオブジェクトにするのがポイント。
42
+
43
+
44
+
45
+ **言語実装の問題**
46
+
47
+
48
+
49
+ Javaはイミュータブル性を保証できない言語です。イミュータブル性を保証する言語なら、古いオブジェクトから新しいオブジェクトを生成するには差分だけを作り、新旧オブジェクトの共通部分はメモリ上で共有できます。Javaは全体をディープコピーして差分を変更することしかできません。
50
+
51
+ そのほか、上のMapのキー問題や、メソッドの戻り値としてコレクションを返すときの防衛的コピーの問題、スレッドの同期化など、イミュータブル性を保証できないための弊害は言い尽くされています。