У меня есть метод List<Foo> getFoos ()
, который получает данные с удаленного сервера и возвращает его.
Конечно, пользователь не должен изменять количество элементов списка, потому что он получит данные, не синхронизированные с данными на сервере (и если он хочет изменить количество элементов, у него есть специальные методы, такие как addFoo ()
).
Первый подход состоял в том, чтобы вернуть массив и заменить подпись метода на Foo[] getFoos ()
. Но он более распространен в java и более удобен для пользователя для работы с коллекциями, поэтому я заменил подпись на List<Foo> getFoos ()
. Этот метод всегда возвращает
Collections.unmodifiableList (originalList)
Итак, когда пользователь пытается изменить список, он получит RuntimeException.
Есть ли какие-либо рекомендации по дизайну api в подобных случаях?