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

时间:2017-07-15 07:50:47

标签: java collections javabeans

这两种向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)

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

是的,存在很大差异,第一种方法是正确的。这就是原因:

  • 它是一个setter方法,因此它应该set列表而不是添加元素。如果您想要add,则可以展示其他方法,例如addStrings()
  • 第二种方法是继续将元素添加到同一列表中,即如果它被10个元素列表调用10次,则结果列表将包含100个不可取的元素
  • 如果列表为NullPointerException,则第二种方法将抛出null(如果对象是新创建的,并且list未分配任何值,则可能会出现这种情况)

详情阅读getterssetters here