java.lang.UnsupportedOperationException异常处理
这个异常遇到了才知道有多坑爹
private String [] array = new String[]{"iphon","xiaomi","yijia"};
List<String> lists = Arrays.asList(array);
在使用了Arrays.asList(),把数组转换成List的时候,生成了ArrayList。表面上代码没什么问题。直接生成 java.util.ArrayList。但是当你使用到这个ArrayList的方法(add,remove),就会直接抛出这个错 java.lang.UnsupportedOperationException
打开源码你会知道表面上看是 java.util.ArrayList,实际上是Arrays的内部类ArrayList, 两个ArrayList,都是继承 AbstractList,这就是坑爹啊。Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法();
再去父类里面看一下add和remove方法,原来直接抛出异常。没有任何处理。这就导致上面这种方法生成的Arrays的ArrayList使用add或者remove方法会直接抛出异常。
所以,在使用Arrays.asList()做转化的时候,如果要进行修改操作,就要再转化一次:
List<String> newList= new ArrayList<>(Arrays.asList(list));
最后告诫大家,如果遇到问题一定要冷静下来,细心翻阅一下源码,并没有那么难。不要让假装努力害了自己。