【发布时间】:2020-02-20 03:27:10
【问题描述】:
在这里,我想创建一个不可修改列表,以使程序的其他部分无法修改其初始值。
这里是代码 sn-p 来说明我的问题。
public class Test {
public static void main(String[] args) {
List<String> unmodifiableList = new ArrayList<String>();
unmodifiableList.add("test1");
unmodifiableList.add("test2");
unmodifiableList = Collections.unmodifiableList(unmodifiableList);
List<String> modifiableList = new ArrayList<String>();
modifiableList.addAll(unmodifiableList);
unmodifiableList = modifiableList;
unmodifiableList.add("test3");
for (String s : unmodifiableList) {
System.out.println(s);
}
}
}
输出: 测试1 测试2 测试3
预期输出: 测试1 测试2
【问题讨论】:
-
这是 Java,不是 JavaScript。
-
如果你想让它不可修改,为什么要创建一个新的可修改列表?
-
unmodifiableList = modifiableList;你认为这句话有什么作用? -
这里只是为了演示问题,但在实际应用中,如果其他开发人员可以使用上述方式修改我的unmodifiableList,那么我们可以放弃使其不可修改的唯一目的。
标签: java arraylist collections