Java 关于get和set以及何时使用超类的问题
我有以下get方法:Java 关于get和set以及何时使用超类的问题,java,interface,get,set,super,Java,Interface,Get,Set,Super,我有以下get方法: public List<PersonalMessage> getMessagesList() { List<PersonalMessage> newList = new ArrayList<PersonalMessage>(); for(PersonalMessage pMessage : this.listMessages) { newList.add(pMessage.clone()); }
public List<PersonalMessage> getMessagesList() {
List<PersonalMessage> newList = new ArrayList<PersonalMessage>();
for(PersonalMessage pMessage : this.listMessages) {
newList.add(pMessage.clone());
}
return newList;
}
public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
this.listMessages = listMessages;
}
我的问题是,我应该在方法签名中使用List
而不是'ArrayList'吗
我决定使用ArrayList
,因为这样我可以强制实现我想要的实现,否则这里那里可能会有不同类型的列表
但我不确定这是否是一种方式…一般来说,我会选择界面(列表)。这意味着,如果您认为ArrayList在这种情况下不适合使用,就不会破坏客户机代码 如果你使用列表,你也同意你自己。getter和setter具有相同的类型
另一个潜在的问题是,如果getter/setter对的类型不同,某些反射实用程序可能无法识别它们。您是否依赖于PersonalMessages的顺序,或者一个集合是否足够?为什么要强制执行特定的实现?对于上面的代码,使用Paramater类型的集合,甚至是Iterable就足够了。setter方法正在打破底层表示的抽象。你的公共界面真的需要它吗
public void setMessagesList(Collection<PersonalMessage> messages) {
this.listMessages = new ArrayList<PersonalMessage>(messages);
}
public void setmessages列表(收集消息){
this.listMessages=新的ArrayList(消息);
}
是的,这也是我的建议。(+1)Spring会对不同的getter/setter类型感到不安。