Передача объекта по ссылке в Java

Возможный дубликат:
Как пройти по ссылке в Java

Можно ли передать объект по ссылке в Java

Как в С#

public static void SomeMethod(ref Object obj)
{
...
}

Ответ 1

Нет, это невозможно в Java.

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

Ответ 2

Все переменные объектов являются ссылками на объект. Когда вы передаете объект методу, вы передаете ссылку объекта уже. Если вы не хотите, чтобы исходный объект был затронут, вы должны сначала клонировать его.

Ответ 3

Нет. Java - только пропускная способность.

Однако вы не должны требовать такой вещи. Вы можете передать объект и изменить его поля - это будет отражено в вызывающем.

Ответ 4

Вам нужно будет создать ссылочный класс. К счастью, есть один. Попробуйте посмотреть AtomicReference. Обратите внимание, что он предназначен для concurrency, поэтому он может быть непригоден.

Другая идея - передать массив Object с длиной одного.

Ответ 5

Передача аргументов типа ссылочных данных

Параметры ссылочных данных, такие как как объекты, также передаются в методы по стоимости. Это означает, что когда метод возвращает, переданный ссылка все еще ссылается на то же самое как и раньше. Однако значения полей объекта можно изменить в методе, если они имеют уровня доступа.

Источник: Учебник по Java > Передача Информация для метода или конструктора