最近开发过程中,居然碰到了一个Arrays.asList的错,怎么个场景呢?传参一个用固定符号拼接的字符串,需要转成集合然后再myBatis里in判断。然后就报错了。
一、代码层面
service层面:
mybatis层面:
二、错误日志
三、日志分析
根据错误日志可以晓得:数据库报错了,然后还是反射的错。错误的根源就是:
那这错误的根源到底是什么呢?那还得从Array.asList分析入手啊。。。
四、Array.asList的坑
1、使用场景
一般我们字符串切割,很容易想到额就是它了,固定符号分割,获取一个集合列表。
【注意】:
2、为何说是一个坑?
① :此方法得到的List的长度是不可改变的(看源码就会一目了然)
当你向这个List添加或删除一个元素时(例如 list.add(“d”);)程序就会抛出异尝(java.lang.UnsupportedOperationException)。
看源码你就会发现,每次调用asList,都是new一个新的,来操作增删。
②:虽然也是集合,但是确实内部类,和我们所用的java.util.arrayList是不一样的
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。