[Java] java.lang.UnsupportedOperationException 에러 처리

    UnsupportedOperationException 에러는 일반적으로 List 형을 new로 초기화하지 않는 상태에서 Arrays로 생성하였을 시 주로 발생한다.

     

    java.lang.UnsupportedOperationException 에러 처리


    케이스

    public static void main(String[] args) {
    	List<String> tempList = Arrays.asList("aaa");
    	System.out.println(tempList);
    		
    	tempList.add("bbb");
    }

     

    일반적으로 값을 세팅하고, 변경하지 않을 거라면 위와 같이 List형을 Arrays.asList로 초기화해도 아무런 문제가 없으나, new로 생성하지 않는 List의 값을 변경하려 한다면 UnsupportedOperationException 에러가 발생한다. 위 코드를 실행하면 다음과 같은 결과가 나온다.

     

    실행결과

    [aaa]
    Exception in thread "main" java.lang.UnsupportedOperationException
    	at java.util.AbstractList.add(AbstractList.java:148)
    	at java.util.AbstractList.add(AbstractList.java:108)
    	at TestMain.main(TestMain.java:15)

     

    즉, 초기화를 한 tempList를 출력할 때에는 아무런 문제가 없으나 tempList에 값을 추가/변경/삭제하려고 할 시 에러가 발생하는 것이다.

     

    해결책

    public static void main(String[] args) {
    	List<String> tempList = new ArrayList<>(Arrays.asList("aaa"));
    	System.out.println(tempList);
    		
    	tempList.add("bbb");
    	System.out.println(tempList);
    }

     

    실행결과

    [aaa]
    [aaa, bbb]
    반응형

    댓글

    Designed by JB FACTORY