Sobes.tech
Junior — Middle
146

Hoe kun je ervoor zorgen dat een argument wordt doorgegeven aan een functie op basis van waarde in plaats van referentie?

Bedrijven waar gevraagd werd
IT OneIT One

Antwoord van AI

sobes.tech AI

В Java все аргументы передаются в методы по значению. Однако для объектов передается значение ссылки на объект, а не сам объект. Чтобы обеспечить передачу по значению (то есть чтобы изменения внутри метода не влияли на исходный объект), можно:

  • Использовать примитивные типы (int, double и т.д.), они передаются по значению напрямую.
  • Для объектов создавать копию (клонировать объект) и передавать копию в метод.

Пример с копированием объекта:

class Point {
    int x, y;
    Point(int x, int y) { this.x = x; this.y = y; }
    Point(Point p) { this.x = p.x; this.y = p.y; } // конструктор копирования
}

void movePoint(Point p) {
    p.x += 10;
    p.y += 10;
}

Point original = new Point(5, 5);
Point copy = new Point(original); // создаём копию
movePoint(copy); // изменяем копию
// original останется без изменений

Таким образом, изменения внутри метода не затронут исходный объект.