Аргументы константной функции в Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Аргументы константной функции в Java?

Сообщение Anonymous »

Есть ли способ добиться чего-то похожего на константу C++ в Java? В частности, у меня есть функция типа

Код: Выделить всё

private static Vector2 sum(Vector2 vec1, Vector2 vec2) {
return vec1.cpy().add(vec2);
}
и я хочу
  • пояснить в подписи, что он не изменяет свои аргументы,

    и
  • обеспечить, чтобы он не изменял свои аргументы (желательно во время компиляции, но вставка утверждений времени выполнения также подойдет).
Теперь я знаю, что Java строго передает по ссылке (я просто дразнюсь, я знаю, что это передача по значению или, скорее, передача по ссылке конечно). Я имею в виду, что в Java, когда вы вызываете метод, ссылка копируется, но эта ссылка указывает на одно и то же содержимое объекта. Если класс имеет общедоступные поля или сеттеры, вызываемый метод всегда может изменить содержимое переданного объекта. Есть ли какие-нибудь, например? аннотация типа @NotNull или инструмент для предотвращения этого? Я только что нашел аннотации JetBrains, такие как @Contract(pure = true), но не думаю, что они обеспечивают какую-либо проверку.

Подробнее здесь: https://stackoverflow.com/questions/413 ... ts-in-java

Вернуться в «JAVA»