Arrays.asList()得到的list使用remove,add等方法报错

错误:java.lang.UnsupportedOperationException

出错代码块:

public class ListTest { 
public static void main(String[] args) {
 String[] array = {"1","2","3","4","5"};
      List<String> list = Arrays.asList(array);
      list.add("6");
   } 
}

发生问题的原因如下: 
调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的市Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新,所以会抛出异常。

解决方法如下:

public class ListTest {
    public static void main(String[] args) {
       String[] array = {"1","2","3","4","5"};
       List<String> list = Arrays.asList(array);
       List arrList = new ArrayList(list);
 arrList.add("6");
   }
 }

猜你喜欢

转载自blog.csdn.net/qq_40638598/article/details/89397834