Reputation: 3131
I have a class which is immutable
Suppose I have a getter method for a member variable of type ArrayList. In that case when I get a reference to that variable, I can add or remove an element from it. In that case immutability seems to get violated.
Can anyone explain this concept in details?
Upvotes: 5
Views: 385
Reputation: 52458
You are indeed right. Immutability is violated.
To make a class immutable, you need to make sure that all of its getters return safe copies of any class whose state could otherwise change.
Upvotes: 3
Reputation: 5327
if you create a new instance of that changed object of type X, then instance of X would be considered as immutable. It is easier to understand if you consider your ArrayList. YOu've methods to alter this list. Each altering method make a copy of this list and add/removes/updates on the new copy and return back.
Upvotes: 0
Reputation: 34508
You shouldn't provide variable of type ArrayList
. Provide just List
and make sure the getter does one of the next:
or both.
Upvotes: 3