Comment
Comment by organsnyder
Making a class immutable doesn't mean that the implementation is fixed. If you need to change your implementation to store data differently, the consumers of your API shouldn't need to be modified. The following modification to your first class would still be immutable:
Also, your first class isn't fully immutable—getTags should be implemented as follows: