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)