unmodifiableList() java.util.Collections의 메소드 클래스는 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) { //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]
목록 개체의 읽기 전용 보기를 검색한 후에는 그 내용을 수정할 수 없습니다. 즉, UnsupportedOperationException을 수행하는 경우 Iterator 개체를 사용하거나 직접 요소를 추가하거나 삭제할 수 없습니다. 올릴 것입니다.
예
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)