繁体   English   中英

使用getter和setter方法将列表添加到bean属性之间的区别?

[英]Difference between using getter and setter methods to add list to a bean property?

这两种向bean属性添加列表的方式之间有什么区别吗?

private List<String> stringList;

public List<String> getStringList() {
    return stringList;
}

public void setStringList(final List<String> stringList) {
    this.stringList = stringList;
}
  1. setStringList(list of strings)
  2. getStringList().addAll(list of strings)

如果列表中已经包含条目,则将使用方法1覆盖这些条目,因为您设置了一个全新的列表实例。

使用方法2,您只需将所有新条目添加到已经存在的列表实例中。

在第一种方法中,整个stringList用提供的列表初始化。 但是在第二种方法中,新列表的所有元素都添加到现有的stringList

是的,有很大的不同,第一种方法是正确的。 原因如下:

  • 这是一个setter方法,因此,它应该set列表而不是添加元素。 如果要add ,可以公开另一个方法,例如addStrings()
  • 第二种方法是继续将元素添加到同一列表中,即,如果用10个元素的列表调用10次,则结果列表将包含100个元素,这是不希望的
  • 第二种方法将在列表为null时抛出NullPointerException (如果是新创建的对象,并且list未分配任何值,则可能为NullPointerException

这里阅读更多关于getterssetters 信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM