coding++:Arrays.asList() - java.lang.UnsupportedOperationException异常处理

这个异常遇到了才知道坑这么大,坑爹的方法。

private String[] otherUserFromArray = new String[]{“3”, “4”, “发放”};

List<String> userFromList = Arrays.asList(otherUserFromArray);

在使用 Arrays.asList()转化数组成为list的时候,生成了ArrayList, 表面上看是 java.util.ArrayList,

实际上是Arrays的内部类 ArrayList, 两个 ArrayList,都是继承 AbstractList,这他妈就是坑,不进去看源码仔细了解,

还以为是一个ArrayList,但是进去后才发现,Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法,

再去看AbstractList的add和remove方法,居然是直接抛出异常 java.lang.UnsupportedOperationException,没有任何处理。

这就导致上面这种方法生成的Arrays的ArrayList使用add或者remove方法会直接抛出异常。

所以,在使用Arrays.asList()做转化的时候,如果要进行修改操作,就要再转化一次:

List<String> userFromList = new ArrayList<>(Arrays.asList(otherUserFromArray));

这样转化为 java.util.ArrayList ,就可以进行修改操作了。

好了,希望都不要被这家伙坑了。

原文地址:https://www.cnblogs.com/codingmode/p/12096881.html

时间: 2024-10-24 21:00:32

coding++:Arrays.asList() - java.lang.UnsupportedOperationException异常处理的相关文章

关于Mybatis的java.lang.UnsupportedOperationException异常处理

圈住的那行报java.lang.UnsupportedOperationException这个错,这个错的意思是:不支持的操作异常 异常我就不贴了,直接上解决办法吧. 可能我的异常跟大家的不太一样,报了这个异常时百度了很久,得到的解决大致都是:遍历List集合时不能做删除操作,要用迭代器等等,但仔细看我的也没有类似的操作啊! 只是做了一个简单的查询...最后发现问题所在: **Dao . xml : 如果你的返回值类型和我一样是List<String>,千万别这样接收,改为String,在Da

Arrays.asList引起的java.lang.UnsupportedOperationException解决方法

在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下. 代码块: public class ListTest { public static void main(String[] args) { String[] array = {"1","2","3","4","5"}

Hbase delete遇到的常见异常: Exception in thread &quot;main&quot; java.lang.UnsupportedOperationException

hbase 执行批量删除时出现错误: Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at org.apache.hadoop.hbase.client.HTable.delete(HTable.java:852) 这种异常其实很常见,remove操作不支持,为什么会出现不支持的情况呢?检查

java.lang.UnsupportedOperationException

在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常.这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList.Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperation

java 异常java.lang.UnsupportedOperationException

在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常: 常见集合如下: private List<VacationCategory> vacationcategorys = Collections.emptyList(); 报错误如下: -- Encapsulated exception ------------\java.lang.UnsupportedOperationException at java.util

Android -- Canvas java.lang.UnsupportedOperationException

干货 java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287) at br.com.iba.view.PageCurlView.drawCurl(PageCurlView.java:284) at br.com.iba.view.PageCurlView.onDraw(PageCurlView.java:353) at android.view.View

mybatis java.lang.UnsupportedOperationException

mybatis 的mapper配置的select查询语句,报java.lang.UnsupportedOperationException 内容如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.UnsupportedOpe

java.lang.UnsupportedOperationException: Can&#39;t convert to dimension: type=0x1

遇到这个bug: 末尾是解决方法.  E/AndroidRuntime: FATAL EXCEPTION: main                                                                         Process: com.XX.XX.XX, PID: 7055                                                                         java.lang.Runt

java.lang.UnsupportedOperationException:This parser does not support specification &quot;null&quot; version &quot;null&quot;

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null" at javax.xml.parsers.SAXParserFactory.setXIncludeAware(SAXParserFactory.java:448) at org.apache.commons.digester.Digester.getFact