赞
踩
环境:jdk1.8
在Java中,使用java.util.ArrayList类时,由于java.util.ArrayList的构造器没法传入数组或者list进行初始化,所以我们常用Arrays.asList()方法来进行List的初始化和测试。使用Arrays.asList()初始化后,但在后续的使用中按照ArrayList的方法去操作经常会遇到很多坑。。。
如下代码:
public static void main(String[] args) {
List myList = Arrays.asList(1, 2, 3, 4);
myList.add(5);
System.out.println(myList.size());
}
执行时报错:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.dmp.TestJavaList.main(TestJavaList.java:9)
具体分析如下:
Arrays.asList()方法返回的对象是 java.util.Arrays.ArrayList, 这个对象和java.util.ArrayList在一些api的使用上是有一些差异的。
这里遇到的问题就是add,addAll方法的问题
java.util.ArrayList的add方法, 实现了接口java.util.Collection的add方法
而java.util.Arrays.ArrayList的add方法,使用的是基类java.util.AbstractList的方法,
在用的时候一定会抛出异常啦。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。