Помимо документирования (очевидно, это также должно быть задокументировано), использования специального типа возвращаемого значения (я опасаюсь ограничивать себя ImmutableX) или предоставления пользователю информации во время выполнения, существует ли какой-либо другой способ сообщить пользователям API, что коллекция, которую они получают от указанного API, является неизменяемой/неизменяемой?
Существуют ли какие-либо соглашения об именах или аннотации маркеров, которые повсеместно обозначают одно и то же?
Изменить: неизменяемый и неизменный не означают одно и то же, но для целей этого вопроса они достаточно похожи. Вопрос в основном сводится к тому, чтобы сообщить пользователю, что возвращаемый объект не полностью соблюдает свой контракт (т. е. некоторые общие операции вызовут исключение времени выполнения).
Collections.unmodifiableList
возвращает неизменяемый, но не неизменяемый объект List — вы не можете вызвать для негоadd
,remove
илиset
, но его содержимое может измениться другими способами. - person user253751   schedule 03.06.2015