값 추가삭제변경이 불가능한 컬렉션 계열 클래스

리스트나 맵등 Collection과 Map계열 클래스들은 앞에 final을 붙혀주면 일반 변수와 마찬가지로 초기 선언한 값 외에 수정이 불가능 하다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) {
          
          System.out.println(A.list.toString());
        
        A.list.add("d"); //변경하려고 하면 java.lang.UnsupportedOperationException이 발생한다.        
        System.out.println(A.list.toString());
                
    }
}
 
class A{
    public static final List<String> list = Arrays.asList(new String[] {"a""b""c"});
}

 

결과 :

[a, b, c]

Exception in thread "main" java.lang.UnsupportedOperationException
 at java.util.AbstractList.add(Unknown Source)
 at java.util.AbstractList.add(Unknown Source)
 at a.Main.main(Main.java:6)
 

- Collections.unmodifiable... 메소드를 이용하는 방법도 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) {
        
        System.out.println(A.list.toString());
 
        A.list.add("d");
        System.out.println(A.list.toString());
        
    }
}
 
class A{
    public static List<String> list = Collections.unmodifiableList(Arrays.asList(new String[] {"a""b""c"}));
}

결과는 위와 동일.

 

댓글()