今天对Arrays.asList()方法做了测试:
public class Test01 {
public static void main(String[] args) {
List<String> _list = Arrays.asList(new String[]{"1","2","3"}) ;
String _str = _list.remove(0) ;
System.out.println(_str);
}
}
执行结果如下:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at Test01.main(Test01.java:24)
跟踪代码发现,具体实现如下:
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a);
}
而再Arrays内部AbstractList类中的remove()方法继承自抽象类AbstractList,
看AbstractList中remove()方法的实现如下:
public E remove(int index) {
throw new UnsupportedOperationException();
}
因此,对Arrays.asList()结果调用remove()方法之后会抛出UnsupportedOperationException异常