hudrogen
@hudrogen

Как передать экземпляр класса Long по ссылке?

В main методе объявляю
Long l = 0l;
далее передаю его в качестве параметра в конструктор другого класса, в котором этому объекту присваиваю значение
this.l = l;
this.l = 150l;


После того как этих вывожу в main-e значение l - оно не поменялось.
Передаю ведь объект, а не примитив
  • Вопрос задан
  • 387 просмотров
Решения вопроса 1
TheKnight
@TheKnight
Программист
Вы немножко путаете рамсы божий дар и яичницу изменение объекта по ссылке и изменение ссылки. Конкретно в вашем случае вы создаете новый объект и присваиваете ссылку именно на него.

Кроме того, Long является неизменяемым. У вас в любом случае ничего бы не получилось.

Если уж вам сильно надо менять содержимое некоего поля в main из метода класса - придется использовать самописные холдеры.
Тык!
class Test {
    public static void main(String[] args) {
        LongHolder holder = new LongHolder(0L);
        System.out.println(holder);
        updateValue(holder, 150L);
        System.out.println(holder);
    }

    private static void updateValue(LongHolder holder, Long newValue) {
        holder.setValue(newValue);
    }

    private static class LongHolder{

        private Long value;

        public LongHolder(Long value) {
            this.value = value;
        }

        public Long getValue() {
            return value;
        }

        public void setValue(Long value) {
            this.value = value;
        }

        @Override
        public String toString() {
            return "LongHolder{" +
                    "value=" + value +
                    '}';
        }
    }
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы