首先,我们想到的是final关键字,但是final一般用作常量且要初始化,不符合我们的需求,因为一旦定义后面就不能再修改。
可以使用Collections.unmodifiableCollection(Collection c)创建一个只读集合。
- 如果是list Collections.unmodifiableList
- 如果是map Collections.unmodifiableMap
- 如果是set Collections.unmodifiableSet
如图所示:
举一个List例子
import java.util.*;
public class UnmodifiableListExample{
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("a");
list = Collections.unmodifiableList(list);
list.add("b");
System.out.println(list);
}
}
输出
使用unmodifiableList转化后再次修改则报错 Exception in thread "main" java.lang.UnsupportedOperationException