java.util.Collections类的unmodifiableList()方法接受List接口的一个对象(实现其类的对象),并返回给定对象的不可修改形式。用户仅对获得的列表具有只读访问权限。
示例
以下Java程序创建一个ArrayList对象,向其中添加元素,然后将其转换为只读List对象。import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
public static void main(String[] args) {
//实例化ArrayList对象
ArrayList list = new ArrayList();
list.add("JavaFx");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
System.out.println(list);
//将ArrayList转换为只读列表
List myList = (List) Collections.unmodifiableList(list);
System.out.println("Array list converted to read only "+list);
}
}
输出结果[JavaFx, Java, WebGL, OpenCV]
Array list converted to read only [JavaFx, Java, WebGL, OpenCV]
检索List对象的只读视图后,您将无法修改其内容,即,不能直接或使用Iterator对象从其中添加或删除元素,如果这样做,则会引发UnsupportedOperationException。
示例import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
public static void main(String[] args) {
//实例化ArrayList对象
ArrayList list = new ArrayList();
list.add("JavaFx");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
System.out.println(list);
//将ArrayList转换为只读列表
List myList = (List) Collections.unmodifiableList(list);
myList.add("CoffeeScript");
System.out.println("Array list converted to read only "+myList);
}
}
运行时异常[JavaFx, Java, WebGL, OpenCV]
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
at SEPTEMBER.remaining.ArrayListReadOnly.main(ArrayListReadOnly.java:20)