环境: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的方法,

在用的时候一定会抛出异常啦。。。
本文探讨了在Java中使用Arrays.asList()方法初始化List时的常见误区,特别是将其与java.util.ArrayList混淆导致的问题,例如尝试调用不支持的方法时会抛出UnsupportedOperationException异常。
2475

被折叠的 条评论
为什么被折叠?



