Arrays.asList는 리스트를 초기화할 때 자주 사용된다. 처음에 다 초기화를 해버리는 Array와 달리 List는 빈 리스트를 만든 후 add를 해주는 식으로만 초기화를 해줄 수 있다는 점이 매우 불편하기 때문이다.
그런데, 이 Arrays.asList를 사용할 때에는 주의할 점이 있따.
위 메서드를 사용할 경우, 이를 할당받는 변수는 원래 만들어진 배열의 인스턴스를 가리킨다.
이런 이유 때문에 위의 방법으로 초기화된 리스트는 ArrayList의 특성(변경이 자유로운)을 갖지 못한다.
List 자료구조는 set(), get(), contains() 매서드를 가지고 있지만 원소를 추가하는 매서드는 가지고 있지 않기 때문에 사이즈를 바꿀 수 없다.
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList("1","2","3","4","5"));
List<String> arrayList2 = Arrays.asList("11","2222","33","44","55");
arrayList.add("3");
arrayList2.add("5"); // java.lang.UnsupportedOperationException
위의 예시와 같이, Arrays.asList를 이용해 변경이 자유로운 ArrayList를 만들고 싶은 경우에는, 첫줄에 적힌 것처럼, ArrayList 클래스의 생성자에 만들어진 List 자료구조를 넣어서 새롭게 만들어진 ArrayList 인스턴스를 참조하도록 해줘야한다.