2016-03-01 2 views
0

Так что у меня возникли проблемы с выяснением того, как связать 2 финальных массива. Что-то вроде этого:Как связать 2 финальных массива

final String[] array1 = new String[4]; 
    final String[] array2 = new String[4]; 

    array1 = array2; 

Но поскольку оба массива являются окончательными, я не могу делать то, что я сделал в приведенном выше примере. Есть ли способ, которым я могу установить array1 в array2, чтобы любые изменения, сделанные в array1, автоматически отражались на array2?

Заранее спасибо.

+0

Почему у вас есть два выделенных массива в первую очередь? И поскольку они окончательные, вы можете попробовать только некоторые неприятные вещи. – Tom

+0

Кроме того, даже если массивы не были окончательными, когда вы делаете array1 = array 2, вы теряете ссылку на array1 и все содержимое с ним. –

+0

2 ссылки являются окончательными, поэтому не могут это сделать – Ramanlfc

ответ

1

Есть ли способ, которым я могу установить array1 в array2, чтобы любые изменения, сделанные в array1, автоматически отражались на array2?

Автоматически, нет. После того, как вы инициализировали array1 и array2 с чем-то, вы не можете повторно инициализировать их снова, так как они оба - final.

Однако, вы можете вручную copyarray2 содержание array1.

for (int i = 0; i < 4; i++) { 
    array1[i] = array2[i]; 
} 

Это будет работать, потому что final модифицированном не гарантирует неизменность - это просто гарантирует, что после того, как ссылка на переменную установлена, она не может изменить больше.

+0

То, что я пытаюсь сделать, было более сложным, чем мой пример, я просто пытался показать, что я пытаюсь но благодаря помощи всех, кого я сумел понять, что я сейчас делаю неправильно. Еще раз спасибо! – Luke

1

Если мы хотим, чтобы изменения array1 отражались в массиве2, нам не нужно объявлять два разных массива. Мы можем просто указать ссылку массива на массив 1, и он покажет изменения, например:

final String[] array1 = new String[4]; 
final String[] array2 = array1; 
Смежные вопросы