Java中的不可修改列表

2022-09-02 22:46:25

我试图设置一个不可修改的。List

在我的代码中,我有一个返回列表的方法。

不应修改此列表,但我不想捕获不可修改列表返回的异常。

private List<T> listeReferenceSelectAll = null;
List<T> oListeRet = new ArrayList<T>();
oListeRet = listeReferenceSelectAll;
return new ArrayList<T>(oListeRet);

这是一个现有的代码,我必须转换它以返回一个不可修改的列表,但是如果调用了“add”方法,则不必捕获异常。

首先,我创建了一个类,该类实现List以覆盖“add”方法来记录异常而不捕获它。

但我不知道如何正确实例化它...


答案 1

你需要:java.util.Collections

return Collections.unmodifiableList(oListeRet);

如果必须编写自己的代码,请让该类实现接口,并为修改内容的方法引发异常。List


答案 2

Collections.unmodifiableList

返回指定列表的不可修改视图。此方法允许模块为用户提供对内部列表的“只读”访问权限。对返回列表的查询操作“读穿”到指定的列表,并尝试修改返回的列表(无论是直接还是通过其迭代器),都会导致“不支持的操作异常”。如果指定的列表是可序列化的,则返回的列表将是可序列化的。同样,如果指定的列表实现 RandomAccess,则返回的列表将实现 RandomAccess。