Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะทำให้ ArrayList อ่านได้เฉพาะใน Java ได้อย่างไร


unmodifiableList() วิธีการของ java.util.Collections คลาสยอมรับวัตถุของอินเทอร์เฟซรายการ (วัตถุของการนำคลาสไปใช้) และส่งคืนรูปแบบที่ไม่สามารถแก้ไขได้ของวัตถุที่กำหนด ผู้ใช้มีสิทธิ์เข้าถึงรายการที่ได้รับแบบอ่านอย่างเดียวเท่านั้น

ตัวอย่าง

โปรแกรม Java ที่ตามมาจะสร้างวัตถุ ArrayList เพิ่มองค์ประกอบเข้าไป แปลงเป็นวัตถุ List แบบอ่านอย่างเดียว

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArrayListReadOnly {
   public static void main(String[] args) {
      //Instantiating an ArrayList object
      ArrayList<String> list = new ArrayList<String>();
      list.add("JavaFx");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      System.out.println(list);
      //Converting the ArrayList to read only list
      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) {
      //Instantiating an ArrayList object
      ArrayList<String> list = new ArrayList<String>();
      list.add("JavaFx");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      System.out.println(list);
      //Converting the ArrayList to read only list
      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)