Arrays.asList

你离开我真会死。 提交于 2020-08-10 08:15:38
  • 起因

发现在用Arrays.asList初始化的List在进行add操作的时候报java.lang.UnsupportedOperationException

示例如下:

public static void main(String[] args) {
        List<Object> argList = Arrays.asList("1", "2", "3", null);
        argList.add("44");
        System.out.println(argList);
}

  • 找问题

可以看到Arrays.asList内部new的ArrayList并不是我们以为的java.util.ArrayList,java.util.ArrayList在进行add操作的时候会进行扩容,如下图:

但是Arrays.asList内部实现的ArrayList并没有重写add操作,那么他父类的add操作是咋样的呢,如下图:

可以看到只要add就会异常!

  • 解决方案

再包一层ArrayList,问题可解。

  • 总结

所以呢,Arrays.asList适合的是那些不会去改变大小的操作。

使用姿势不对,盲目使用就会掉进这样的坑,记录一下,防止后续再摔跤!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!