外贸企业的网站建设,没有备案的网站会怎么样,安卓app制作入门教程,酒泉手机网站建设java.lang.UnsupportedOperationException解决方法 先放错误信息业务场景报错分析先看报错代码位置进入源码查看至此 真相大白 解决方法总结 先放错误信息 业务场景 已知有学生 张三李四王五赵六 等人 private ListString nameList Arrays.asList(张三, String nameList Arrays.asList(张三, 李四, 王五, 赵六); 现有一名考生 如考试分数大于等于80分 即编入该班级 if (score 80) { nameList.add(七七); } 报错分析
先看报错代码位置 在类 MainActivity 中的第32行代码OK咱们进入源码查看 进入源码查看 先看 Arrays.asList 方法可以看到这里返回值是new了一个 ArrayList 但此 ArrayList 是Arrays类本身的内部类通过查找发现此类中并没有add方法那么咱们可以看到此 ArrayList 类继承了 AbstractList 咱们进入 AbstractList 类查看即可找到原因 通过查找发现此类中并没有add方法 进入 AbstractList 类查看可以看到该方法会抛此异常 至此 真相大白 此时咱们进入 ArrayList 源码中查看可以看出是重写了add方法至此 真相大白 解决方法 既然已知原因只需类型转换即可 private ListString nameList new ArrayList(Arrays.asList(张三,李四,王五,赵六)); 总结 在使用 Arrays.asList() 方法生成的 List 中的 add()、remove() 等方法时运行报异常这是由于 Arrays.asList() 返回的是 Arrays 本身的内部ArrayList类而不是 java.util.ArrayList 类。Arrays 的内部类 ArrayList 和 java.util.ArrayList 虽然都是继承 AbstractList但 java.util.ArrayList 重写了这些方法而 Arrays 的内部ArrayList 类没有重写这些方法所以会抛出异常。