Неизменяемый объект с переменной-членом ArrayList - почему эту переменную можно изменить?

У меня есть один класс с различными переменными-членами. Есть конструктор и есть методы-геттеры, но нет методов-сеттеров. Фактически, этот объект должен быть неизменным.

public class Example {
   private ArrayList<String> list; 
}

Теперь я заметил следующее: когда я получаю список переменных с помощью метода получения, я могу добавлять новые значения и так далее - я могу изменить ArrayList . Когда я в следующий раз вызываю get () для этой переменной, возвращается измененный ArrayList . Как это может быть? Повторно не ставил, просто поработал! Для String такое поведение невозможно. Так в чем разница?

18
задан killabyte_garcia 11 May 2015 в 11:46
поделиться