平台骗了钱,wordpress博客seo优化插件,中国seo排行榜,内容管理系统 开源一、背景
记录一次小坑…
最近在写一个关于Excel导出的小需求#xff0c;由于系统都有一些工具类#xff0c;还有原来已经做好的导出#xff0c;直接拿过来改了改就用了#xff0c;没想到直接报错#xff0c;尴尬。
还是那句话#xff0c;别人都能用#xff0c;我复制…一、背景
记录一次小坑…
最近在写一个关于Excel导出的小需求由于系统都有一些工具类还有原来已经做好的导出直接拿过来改了改就用了没想到直接报错尴尬。
还是那句话别人都能用我复制的为啥就报错离了个大谱啊。
关于Excel导出工具可以参考 JAVA导出Excel文件https://blog.csdn.net/qq_38254635/article/details/126691175
二、处理问题
2.1 报错复现
测试demo代码报错现场复现
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Test {public static void main(String[] args) {System.out.println(方法一 one().toString());System.out.println(方法二 two().toString());}public static ListString one(){ListString list new ArrayList();list.addAll(Arrays.asList(first, second));list.add(third);return list;}public static ListString two(){ListString list Arrays.asList(first, second);list.add(third);return list;}}不得不说不运行还真不一定能知道这代码会报错… 2.2 分析原因
1、先看一下没有报错的方法。
add方法如下图 额这就很明显了就是大家都说的ArrayList的动态扩容所以不会报错。
不清楚的可以看一看这个
ArrayList和LinkedList区别https://blog.csdn.net/qq_38254635/article/details/121082607
2、再看一下报错的方法。
Exception in thread main java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at Test.two(Test.java:23)at Test.main(Test.java:11)点到 AbstractList 类的 108 行可能还是点懵。 再看 AbstractList 类的 148 行我*无情啊。 好家伙这直接给 throw new UnsupportedOperationException(); 这是不让改啊。
只记得动态扩容的好却忘了这只是ArrayList重写带给我们的便利啊。
2.3 总结
反过来再看一下demo
ListString list Arrays.asList(first, second);其中得到的 list 并非我们经常所使用的 ArrayList。
查看 Arrays.asList 不难发现得到的是一个内部类所以并没有对 add()、remove() 进行重写。
也可以从网上搜搜 UnsupportedOperationException 都会有详细的解释。
建议写一个demo让他报错然后点进去看看源码才能更深入的了解其真实原因。
OK就这些吧。
有什么不对的还望指正书写不易觉得有帮助就点个赞吧☺☺☺