回答編集履歴
3
内部もunmodifiableに
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
tableCache_ = Collections.unmodifiableList(
|
16
16
|
Stream
|
17
17
|
.of(table_)
|
18
|
-
.map(row -> Arrays.asList(row))
|
18
|
+
.map(row -> Collections.unmodifiableList(Arrays.asList(row)))
|
19
19
|
.collect(Collectors.toList())
|
20
20
|
);
|
21
21
|
tableChanged_ = false;
|
2
誤用
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
**これ以外の方法はありません.**
|
7
7
|
|
8
8
|
|
9
|
-
【A】 [java.util.Collections.unmodifiableList](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#unmodifiableList-java.util.List-)メソッドで,イミュータブルなリストは作れるそうです.プリミティブの配列は無理なのでリストで妥協してください.また,そのまま何も考えずに書いてしまうとメソッドを呼び出すたびに
|
9
|
+
【A】 [java.util.Collections.unmodifiableList](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Collections.html#unmodifiableList-java.util.List-)メソッドで,イミュータブルなリストは作れるそうです.プリミティブの配列は無理なのでリストで妥協してください.また,そのまま何も考えずに書いてしまうとメソッドを呼び出すたびにリストが作られてしまって意味が無いので,**変更を加えたあとの1回目の呼び出しのみ**`Collections.unmodifiableList()`で生成するようにし,2回目以降はメンバ変数に保存しておいたものをreturnすればよいでしょう.変更を加えた時に`tableChanged_`の値も変更するようにしてください.
|
10
10
|
|
11
11
|
```java
|
12
12
|
public List<List<Card>> getTable()
|
1
訂正
answer
CHANGED
@@ -22,8 +22,6 @@
|
|
22
22
|
}
|
23
23
|
return tableCache_;
|
24
24
|
}
|
25
|
-
|
26
|
-
return Collections.unmodifiableList(Arrays.asList(array));
|
27
25
|
```
|
28
26
|
|
29
27
|
【B】 既存の回答の通り,ビュー用のメソッドを作る方法です.
|