java中的不可修改列表

时间:2014-01-19 15:01:19

标签: java list

我很困惑,如果我试图在java中修改一个设置为不可修改的列表,实际会发生什么,我对Java相对较新,而且我可以找到其他人提出类似问题的地方它是否仍然可以修改,如果是这样,为什么会这样?

谢谢。

3 个答案:

答案 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。

查看documentation