I have the following get method:
public List<PersonalMessage> getMessagesList() {
List<PersonalMessage> newList = new ArrayList<PersonalMessage>();
for(PersonalMessage pMessage : this.listMessages) {
newList.add(pMessage.clone());
}
return newList;
}
And you can see that if I need to change the implementation from ArrayList to something else, I can easily do it and I just have to change the initialization of newList and all other code that depends on what getMessageList() returns will still work.
Then I have this set method:
public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
this.listMessages = listMessages;
}
My question is, should I use List instead of `ArrayList in the method signature?
I have decided to use ArrayList because this way I can force the implementation I want, otherwise there could be a mess with different types of lists here and there.
But I’m not sure if this is the way to go…
The setter method is breaking the abstraction of the underlying representation. Is it really needed on your public interface?