Хранение в массиве ссылок на другой массив

172
05 сентября 2017, 09:12

Как можно хранить в одном массиве (1)ссылки на другой массив(2). Производя изменения во втором массиве менялись значения в первом.

Answer 1

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

public static void main(String[] args) {
    class MyObj {
        private int someField;
        public MyObj(int someField) {
            this.someField = someField;
        }
        public void setSomeField(int someField) {
            this.someField = someField;
        }
        @Override
        public String toString() {
            return "MyObj{" +
                    "someField=" + someField +
                    '}';
        }
    }

    MyObj obj1 = new MyObj(1);
    MyObj obj2 = new MyObj(2);
    MyObj [] firstArray = {obj1, obj2};
    MyObj [] secondArray = {obj1, obj2};
    System.out.println("Before: ");
    System.out.println(Arrays.toString(firstArray));
    System.out.println(Arrays.toString(secondArray));
    firstArray[0].setSomeField(111);
    firstArray[1].setSomeField(222);
    System.out.println("After: ");
    System.out.println(Arrays.toString(firstArray));
    System.out.println(Arrays.toString(secondArray));
}

Результат:

Before: 
[MyObj{someField=1}, MyObj{someField=2}]
[MyObj{someField=1}, MyObj{someField=2}]
After: 
[MyObj{someField=111}, MyObj{someField=222}]
[MyObj{someField=111}, MyObj{someField=222}]
READ ALSO
Крашится приложение в эмуляторе Android Studio

Крашится приложение в эмуляторе Android Studio

Я использую эмулятор AVD Android Studio в UbuntuЭмулятор работает нормально только тогда когда я запускаю приложения стандартные

256
Базовые типы в Java

Базовые типы в Java

В лекции Шипилева есть замечание о том, что в java из базовых типов есть 8 примитивов типов и ссылка(8:30)Но ведь ссылка - это один из классов пакета...

276
Можно ли совместить generic type двух разных классов в Java?

Можно ли совместить generic type двух разных классов в Java?

Делаю андроид приложениеНа DataBinding описываю смену врагментов в рамках одной активити

200
Две строки в элементе меню

Две строки в элементе меню

Необходимо динамически добавлять информацию о пользователе (имя + email) в элемент менюИнформация должна быть отображена в две строки в одном...

203