대부분 사람들이 알고 있는 Collection 중의 하나인 ArraysList이다.
일반적인 배열과 거의 비슷하고 활용성이 좋기 때문에 List의 구현객체로 많이 사용된다.
ArrayList를 선언하면서 초기화 시켜주기 위해서, 흔히 Arrays.asList()를 Collection을 매개변수로 가지는 ArrayList 생성자의 매개변수로 넣어준다.
Arrays의 asList 메소드를 살펴보았는데 ArrayList를 반환하는 것을 알 수 있다.
Compile Error는 발생하지 않는다!
하지만 실행 결과는...
그 이유에 대해서 찾으려고 asList를 다시 보았는데,
위와 같이 우리가 흔히 아는 ArrayList와 같은 이름을 하고 있다.
똑같이 AbstractList를 상속받는다.
AbstractList를 상속받기 때문에 add와 remove를 처리할 수 있다.
✔️ 또한 java.util.ArrayList는 add와 remove가 자신만의 방식으로 Override 되어있다.
하지만 Arrays의 nested된 ArrayList는 그렇지 않다.
위 사진은 Java API 문서 중 asList에 대한 Description이다.
이유는 바로 Fixed-Size 였다. add와 remove를 하면 size의 변경이 발생하는데 asList()는 fixed-Size를 반환하기 때문에 UnsupportedOperationException가 발생했던 것이다.