使用 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;
}
setStringList(list of strings)
getStringList().addAll(list of strings)
如果列表已经包含条目,则这些条目将被方法 1 覆盖,因为您设置了一个全新的列表实例。
使用方法 2,您只需将所有新条目添加到已经存在的列表实例中。
在第一种方法中,整个 stringList
使用提供的列表进行初始化。
但是在第二种方法中,新列表的所有元素都添加到现有的 stringList
.
是的,有很大的区别,第一种方法是正确的。原因如下:
- 这是一个 setter 方法,因此,它应该
set
列表而不是添加元素。如果你想add
,你可以公开另一个方法,比如addStrings()
- 第二种方法会继续将元素添加到同一个列表中,即如果使用包含 10 个元素的列表调用 10 次,结果列表将包含 100 个元素,这是不可取的
- 如果列表是
null
,第二种方法将抛出 NullPointerException
(如果对象是新创建的并且 list
未分配任何值,则可能会是)
阅读有关 getters
和 setters
here 的更多信息。
这两种添加列表到bean的方式有区别吗属性?
private List<String> stringList;
public List<String> getStringList() {
return stringList;
}
public void setStringList(final List<String> stringList) {
this.stringList = stringList;
}
setStringList(list of strings)
getStringList().addAll(list of strings)
如果列表已经包含条目,则这些条目将被方法 1 覆盖,因为您设置了一个全新的列表实例。
使用方法 2,您只需将所有新条目添加到已经存在的列表实例中。
在第一种方法中,整个 stringList
使用提供的列表进行初始化。
但是在第二种方法中,新列表的所有元素都添加到现有的 stringList
.
是的,有很大的区别,第一种方法是正确的。原因如下:
- 这是一个 setter 方法,因此,它应该
set
列表而不是添加元素。如果你想add
,你可以公开另一个方法,比如addStrings()
- 第二种方法会继续将元素添加到同一个列表中,即如果使用包含 10 个元素的列表调用 10 次,结果列表将包含 100 个元素,这是不可取的
- 如果列表是
null
,第二种方法将抛出NullPointerException
(如果对象是新创建的并且list
未分配任何值,则可能会是)
阅读有关 getters
和 setters
here 的更多信息。