Ric*_*ral 3 java get interface set super
我有以下get方法:
public List<PersonalMessage> getMessagesList() {
List<PersonalMessage> newList = new ArrayList<PersonalMessage>();
for(PersonalMessage pMessage : this.listMessages) {
newList.add(pMessage.clone());
}
return newList;
}
Run Code Online (Sandbox Code Playgroud)
您可以看到,如果我需要将实现更改ArrayList为其他内容,我可以轻松地执行此操作,我只需要更改初始化newList以及所有其他依赖于getMessageList()返回仍然有效的代码.
然后我有这个set方法:
public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
this.listMessages = listMessages;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我应该List在方法签名中使用而不是`ArrayList吗?
我已决定使用,ArrayList因为这样我可以强制执行我想要的,否则可能会出现乱七八糟的不同类型的列表.
但我不确定这是否可行......
setter方法打破了底层表示的抽象.你的公共界面真的需要吗?
public void setMessagesList(Collection<PersonalMessage> messages) {
this.listMessages = new ArrayList<PersonalMessage>(messages);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |