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



这两种向 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创建的并且未分配任何值,则可能会如此)

在此处阅读有关getterssetters的更多信息。

最新更新