前一段时间看到一个简单代码,将数组通过Arrays.asList()方法转换成List集合,但是得到的List集合,无法进行add()操作。会产生异常现象如下所示:
"java.lang.UnsupportedOperationException"
令我左右思考不出来,返回的明明是List集合,为什么不能执行add()方法操作呢,然后我对其研究了底层源码,发现了问题,下文进行原理的解析,希望对遇到此类问题的读者,起到帮助。不多说了,上内容。
首先,我们先将这个问题复现出来,如下代码所示:
Integer[] datas = {1,2,3,4,5};
List<Integer> list = Arrays.asList(datas);
list.add(5);
System.out.println(list.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 sumeng.com.gg.Test01.main(Test01.java:12)
结果显示由Arrays.a