早上同事发现了一个很有趣的问题,后来详细跟踪了一下,发现了原因。
有这样的一段Java Code,
1 2 |
List<String> aList = Arrays.asList("A", "B", "C"); aList.add("D") |
看上去很好,但会有个异常等着你,是UnsupportedOperationException.
为什么呢?Arrays.asList会返回一个ArrayList, 但注意,这个ArrayList不是那个ArrayList。它是Arrays的一个Nested Class,所以应该说它是Arrays.ArrayList. 而且它没有实现add, remove等接口,所以那个异常就出来了。
这个例子告诉我们Arrays.asList生成的List是不能修改的,是一个AbstractList。