如何使ArrayList在Java中只读?

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<String> list = new ArrayList<String>();

      list.add("JavaFx");

      list.add("Java");

      list.add("WebGL");

      list.add("OpenCV");

      System.out.println(list);

      //将ArrayList转换为只读列表

      List<String> myList = (List<String>) 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<String> list = new ArrayList<String>();

      list.add("JavaFx");

      list.add("Java");

      list.add("WebGL");

      list.add("OpenCV");

      System.out.println(list);

      //将ArrayList转换为只读列表

      List<String> myList = (List<String>) 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)

以上是 如何使ArrayList在Java中只读? 的全部内容, 来源链接: utcz.com/z/351499.html

回到顶部