list = Arrays.asList(str); list.add("3"); _addall java.lang">
赞
踩
- public class TestDemo {
- public static void main(String[] args) {
- String [] str = {"1","2"};
- List<String> list = Arrays.asList(str);
- list.add("3");
- }
- }
数据str转List,List操作add、addAll、remove方法都会报java.lang.UnsupportedOperationException,为什么都会报相同的错呢,主要是因为内部类ArrayList并没有对相应方法进行重写操作,我们一步一步看源码来分析一下,首先我们进asList方法中,发现源码做的是调用内部类ArrayList的操作,如下图
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, Serializable内部类也是继承了AbstractList,下面可以看一下AbstractList的源码如何写的
同样由于addAll是调用的add方法所以同样也会报相同的错误
- public class TestDemo {
- public static void main(String[] args) {
- String [] str = {"1","2"};
- List<String> list = Arrays.asList(str);
- //aa.add("3");
- List<String> arryList = new ArrayList(list);
- arryList.add("3");
- }
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。