我有以下获取方法:
public List<PersonalMessage> getMessagesList() {
List<PersonalMessage> newList = new ArrayList<PersonalMessage>();
for(PersonalMessage pMessage : this.listMessages) {
newList.add(pMessage.clone());
}
return newList;
}
而且你可以看到,如果我需要将实现从 ArrayList
更改为其他东西,我可以很容易地做到,我只需要更改 newList
的初始化以及所有其他依赖于 getMessageList()
返回内容的代码仍然有效。
然后我有这个设置方法:
public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
this.listMessages = listMessages;
}
我的问题是,我应该在方法签名中使用 List
而不是 `ArrayList 吗?
我决定使用 ArrayList
,因为这样我可以强制实现我想要的,否则可能会到处都是不同类型的列表。
但我不确定这是不是要走的路...
最佳答案
setter 方法打破了底层表示的抽象。您的公共(public)界面真的需要它吗?
public void setMessagesList(Collection<PersonalMessage> messages) {
this.listMessages = new ArrayList<PersonalMessage>(messages);
}
关于java - 关于获取和设置以及何时使用父类(super class)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2890064/