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)