Immutable Object with ArrayList member variable - why can this variable be changed?
I have got one class with various member variables. There is a constructor and there are getter-methods, but no setter-methods. In fact, this object should be immutable. public class Example { private ArrayList<String> list; } Now I noticed the following: when I get the variable list with a getter-method, I can add new values and so on - I can change the ArrayList . When I call the next time get() for this variable, the changed ArrayList is returned. How can this be? I didn't set it again, I just worked on it! With a String this behaviour isn't possible. So what is the difference here? Just