文档章节

java.lang.UnsupportedOperationException

wushuaixing
 wushuaixing
发布于 2014/03/11 17:38
字数 179
阅读 964
收藏 3
使用Arrays.asList()后调用add,remove这些method时出现java.lang.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(),add()等,所以throw UnsupportedOperationException。

      例子:

package com.test;

    import java.util.Arrays;
import java.util.List;

public class TestUnsupported {
  public static void main(String[] args) {
        String[] s = {
            "one", "two", "three", "four", "five",
            "six", "seven", "eight", "nine", "ten",
          };

        List a = Arrays.asList(s);
        System.out.println(
          "a.contains(" + s[0] + ") = " +
          a.contains(s[0]));
        a.add("eleven"); // Unsupported
        a.remove(s[0]); // Unsupported
      }
}

运行后,抛出异常如下:

Exception in thread "main" java.lang.UnsupportedOperationException
 at java.util.AbstractList.add(AbstractList.java:151)
 at java.util.AbstractList.add(AbstractList.java:89)
 at com.test.TestUnsupported.main(TestUnsupported.java:28)

 

解决方法是使用Iterator,或者转换为ArrayList

List arrayList = new ArrayList(a);

© 著作权归作者所有

共有 人打赏支持
wushuaixing
粉丝 0
博文 4
码字总数 3430
作品 0
海淀
程序员
下面的代码为什么报错

public static void main(String[] args){ a.add("a" + i); b.add("b" + i); } PS:报错信息是:java.lang.UnsupportedOperationException...

于之剥柚
2012/06/08
1K
9
The user must supply a JDBC connection这个是什么原因啊。?

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.UnsupportedOperationException: ......

Bless_you
2013/04/18
2.6K
4
PushSharp在真机上运行报java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf

PushSharp在真机上运行报java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf.在模拟器上正常...

759930804
2013/07/02
2.6K
2
Jfinal this.getParaMap().put("data_to_file",String[]);存值问题

this.getParaMap().put("key",String[]);,获取到的map可以这样放吗:? 错误提示: java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableMap.put(Collections.j......

guanxf
2013/03/08
407
2
java如何读取sybase中的image类型数据

Error querying database. Cause: org.jboss.util.NestedSQLException: Error; - nested throwable: (java.lang.UnsupportedOperationException: The method com.sybase.jdbc3.jdbc.SybResul......

苏城
2016/07/13
452
4

没有更多内容

加载失败,请刷新页面

加载更多

MySQL面试题集锦

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正...

老道士
10分钟前
0
0
使用 LogStash 归集日志

elastic 官网: https://www.elastic.co/ 为了便于集中查看多台主机的业务日志,使用 Filebeat, Redis, Logstash的方式进行收集: (1) Filebeat 监控日志文件的变化, 将新增部分写入redis中, 每...

ouhoo
13分钟前
0
0
java序列化(六) - protostuff序列化

添加依赖 <dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.5.9</version> </de......

晨猫
20分钟前
0
0
Ceph学习笔记1-Mimic版本多节点部署

特别说明: 本方法也可以用于单节点部署,只部署一个Monitor(只是会形成单点故障而已),最低要求是使用两个分区创建2个OSD(因为默认最小副本是2);如果不需要使用CephFS,则可以不部署M...

LastRitter
22分钟前
0
0
923. 3Sum With Multiplicity - LeetCode

Question 923. 3Sum With Multiplicity Solution 题目大意: 给一个int数组A和一个目标值target,求满足下面两个条件的组合个数,其中i,j,k分别为数组的索引 i<j<k target = A[i] + A[j] + A[k...

yysue
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部