在执行如下代码时,发现当apps.add("...");代码执行时,会报java.lang.UnsupportedOperationException错误
List<String> apps = Arrays.asList("...");
apps.add("...");
问题出现的原因如下:
1、ArrayList有两个包java.util.ArrayList包;java.util.Arrays.ArrayList包
2、调用Arrays.asList()生成的List,返回的是Arrays的内部类ArrayList而不是java.util.ArrayList,add、remove方法时会报异常 。
3、java.util.ArrayList重写了父类的add和remove,所以使用asList继承的父类的add和remove,会抛出UnsupportedOperationException异常
解决问题方法如下:
List<String> apps = new ArrayList<>(Arrays.asList("..."));
apps.add("...");
总结:使用asList方法继承的父类的add和remove,会抛出java.lang.UnsupportedOperationException异常,java.util.ArrayList重写了父类的add和remove,所以需要使用ArrayList来调用方法