У меня есть метод, который принимает несколько аргументов, некоторые из этих аргументов будут изменены внутри метода. Некоторые используются только для чтения. Клиент (другие части кода, вызывающие такой метод) предоставляют экземпляры объекта в качестве аргументов.
Какие конструкции языка java доступны, что позволяет мне объявить, что аргумент не должен, не должен или не может быть изменен внутри метода. Такие ограничения, как аннотации или ключевые слова, сообщают клиенту, что метод не будет изменять экземпляры объектов, используемые в качестве аргументов в вызове метода. Также конструкции, которые будут генерировать ошибки компиляции или предупреждения в случае, если я (как разработчик такого метода) попытаюсь случайно изменить объект внутри реализации метода.
Я знаю о ключевом слове final
, но это сделано только для того, чтобы убедиться, что ссылка не обновляется.
Неизменяемость - это не решение, так как в других методах (или где-либо еще в моем приложении) я хочу, чтобы экземпляры этого типа были изменяемыми, только в этом вызове метода я хочу дать клиенту «обещание», которое я выиграл. не меняет его экземпляр, предоставленный в качестве аргумента.
Глубокое копирование или клонирование аргумента или разрешение клиенту (вызывающей стороне) делать это не обязательно, так как в любом случае изменение экземпляра не является частью логики метода. Я просто хочу знать, поможет ли язык перепроверить, что этого не произойдет.
UnsupportedOperation
?), Если вызов этого метода (метода установки) был выполнен из недопустимого контекста. На самом деле я не думаю, что это хорошая идея: P - person TheLostMind   schedule 18.11.2015