List<Foo> getFoos ()
リモートサーバーからデータを取得して返すメソッドがあります。
もちろん、ユーザーはサーバー上のデータと同期されていないデータを取得するため、リストのアイテム数を変更しないでください(アイテム数を変更したい場合は、のような特別なメソッドがありますaddFoo ()
)。
最初のアプローチは、配列を返し、メソッドのシグネチャをに変更することでしたFoo[] getFoos ()
。しかし、Javaでより一般的であり、ユーザーがコレクションを操作する方が便利なので、署名をに変更しましたList<Foo> getFoos ()
。このメソッドは常に
Collections.unmodifiableList (originalList)
したがって、ユーザーがリストを変更しようとすると、RuntimeExceptionが発生します。
同様の場合のAPI設計に関する推奨事項はありますか?