データのプライベートな可変リストを持つクラスがあります。
次の条件を指定して、リスト項目を公開する必要があります。
- リストは外部で変更可能であってはなりません。
- getter 関数を使用する開発者にとって、取得したリストを変更できないことは明らかです。
どのゲッター関数を推奨アプローチとしてマークする必要がありますか? または、より良い解決策を提供できますか?
class DataProcessor {
private final ArrayList<String> simpleData = new ArrayList<>();
private final CopyOnWriteArrayList<String> copyData = new CopyOnWriteArrayList<>();
public void modifyData() {
...
}
public Iterable<String> getUnmodifiableIterable() {
return Collections.unmodifiableCollection(simpleData);
}
public Iterator<String> getUnmodifiableIterator() {
return Collections.unmodifiableCollection(simpleData).iterator();
}
public Iterable<String> getCopyIterable() {
return copyData;
}
public Iterator<String> getCopyIterator() {
return copyData.iterator();
}
}
UPD: この質問は、リスト ゲッター実装のベスト プラクティスに関する実際のコード レビュー ディスカッションからのものです。