首页 > 代码库 > 为什么使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法会抛出unsupportedoperationexception(不支持操作异常)

为什么使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法会抛出unsupportedoperationexception(不支持操作异常)

 这是由于:
  
  Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。


Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。


  
ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。


  解决方法是使用Iterator,或者使用 ArrayList。

为什么使用 Arrays.asList()得到的集合,使用remove( )和 add( )方法会抛出unsupportedoperationexception(不支持操作异常)