你通常如何用Java收集getter?例如,我有两个班级.
public class A
{
String s = "1";
A () {}
}
public class B
{
List<A> list;
public B()
{
list = new ArrayList<>();
}
public List<A> getList()
{
return list;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我喜欢这样的话,我可以这样做:
B elem = new B();
elem.getList().add(new A());
Run Code Online (Sandbox Code Playgroud)
所以它打破了吸气剂的想法.
我可以
public List<A> getList()
{
return new ArrayList<>(list);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我修改结果的某些元素,原始元素将被更改.
返回不可修改的集合Collection.unmodifiableList(list):
public List<A> getList() {
return Collections.unmodifiableList(list);
}
Run Code Online (Sandbox Code Playgroud)
引用Javadoc:
返回指定列表的不可修改视图.此方法允许模块为用户提供对内部列表的"只读"访问.对返回列表的查询操作"读取"到指定的列表,并尝试修改返回的列表,无论是直接还是通过其迭代器,都会导致
UnsupportedOperationException.
因此,无法在返回的列表中追加/删除元素,也无法修改其元素.
如果要返回列表的深层克隆而不是不可修改的列表,请参阅此问题.
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |