Неизменные аргументы функции в java - PullRequest
2 голосов
/ 01 марта 2020

Я новичок в java, и я столкнулся с этим вопросом: в C / C ++ у нас есть модификатор const , который делает параметры функции неизменяемыми , поэтому пользователь уверен, что аргументы, которые они передают, не изменятся.

Но я не смог найти то же самое в java. Конечно, модификатор final делает поле назначаемым только один раз, и в некоторой степени работает нормально. Но как насчет Объектов, которые мне нужно изменить перед отправкой? (Я мог бы сделать окончательную копию Объекта, но я не нашел его достаточно хорошим. Поправьте меня, если я ошибаюсь). как насчет полей объекта? как мы можем передать объект таким образом, чтобы быть уверенным в целостности объекта?

1 Ответ

3 голосов
/ 01 марта 2020

В Java неизменяемость является внутренним свойством c типа.

Например, String является неизменным. Нет необходимости в const . StringBuilder, CharSequence являются или, может быть, изменяемыми. Так что понадобится копия. В этих случаях быстрый .toString(). выполнит работу.

C ++ по умолчанию - неявная копия аргументов. Копирование в некотором роде является лучшей версией неизменности. const & - это эффективный способ получить копию, не платя за нее. (Я уверен, что многие люди будут категорически не согласны с этим пунктом.)

...