Arrays.asList() trả về một view kích thước cố định (java.util.Arrays$ArrayList, không phải java.util.ArrayList) bọc quanh mảng gốc.
Nó không có chỗ để chứa thêm phần tử nên add/remove/clear ném UnsupportedOperationException.
java
List<String> view = Arrays.asList("a", "b");
view.set(0, "z"); // OK - ghi xuyên xuống mảng gốc
view.add("c"); // UnsupportedOperationException
List<String> real = new ArrayList<>(Arrays.asList("a", "b"));
real.add("c"); // OKSo với List.of() (Java 9+):
Arrays.asList(): cố định kích thước nhưngset()được, cho phép phần tửnull, thay đổi mảng gốc thì view cũng đổi theo.List.of(): bất biến hoàn toàn — cảset()cũng ném, và không nhậnnull(némNullPointerExceptionngay khi tạo).
Muốn list sửa được thì luôn bọc lại: new ArrayList<>(...).