我很困惑,如果我试图在java中修改一个设置为不可修改的列表,实际会发生什么,我对Java相对较新,而且我可以找到其他人提出类似问题的地方它是否仍然可以修改,如果是这样,为什么会这样?
谢谢。
答案 0 :(得分:3)
直接来自JavaDoc:
返回指定列表的不可修改视图。这种方法允许 模块为用户提供对内部列表的“只读”访问。 对返回列表的查询操作“通读”到指定的 列表,并尝试修改返回的列表,无论是直接还是通过 它的迭代器,导致UnsupportedOperationException。
所以它会抛出一个UnsupportedOperationException
。
或者源代码:
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
//etc...
答案 1 :(得分:2)
您无法将List设置为不可变。它是可变的还是不可变的。您可以使用不可变的包装器来包装列表,但是如果您仍然可以访问基础列表,则可以对其进行修改。
答案 2 :(得分:0)
返回指定列表的不可修改视图。这种方法允许 模块为用户提供对内部列表的“只读”访问。 对返回列表的查询操作“通读”到指定的 列表,并尝试修改返回的列表,无论是直接还是通过 它的迭代器,导致UnsupportedOperationException。