【发布时间】:2014-04-21 19:34:04
【问题描述】:
我已经在 A 类中声明了我的数组列表:
private ArrayList<String> user = new ArrayList<String>();
我在同一个类(A 类)中创建了我的 getter 方法:
public ArrayList<String> getUser()
{
return user;
}
然后在我的第二堂课(B 类)中,我能够做到以下几点:
A UD = new A();
UD.getUser().clear();
UD.getErrmsg().clear();
如何防止我的第二个班级清除我的第一个班级(A 级)中的数组列表?
【问题讨论】:
-
Collections.unmodifiableList(list). -
已经说过两次了,或者使用 Guava 及其
ImmutableList;但是,这并不能阻止 setter 问题的发生 -
您需要制作所谓的防御性副本。检查这个问题stackoverflow.com/questions/9743513/…。之前的建议准确地提到了这是如何完成的
-
感谢帮了大忙的人。