java.lang.UnsupportedOperationException
2014-03-11 00:00
323 查看
摘要: 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 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);
使用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);
相关文章推荐
- hibernate程序的异常:java.lang.UnsupportedOperationException: The user must supply a JDBC connection
- java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12
- java.lang.UnsupportedOperationException: Not supported by BasicDataSource
- 环信: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException
- [置顶] spark2.2错误 java.lang.UnsupportedOperationException: No Encoder found for org.apache.spark.sql.Row解决
- Android -- Canvas java.lang.UnsupportedOperationException
- java.lang.UnsupportedOperationException(向数组增加值)
- java.lang.UnsupportedOperationException: Not supported by DruidDataSource 错误解析
- java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
- 异常:java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
- java.lang.UnsupportedOperationException
- java.lang.UnsupportedOperationException
- java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
- List报 java.lang.UnsupportedOperationException异常
- hibernate---java.lang.UnsupportedOperationException: The user must supply a JDBC connection
- java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12问题
- java.lang.UnsupportedOperationException 解决方案
- 分享以下编译错误:java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException的一种解决方法
- java.lang.UnsupportedOperationException: This parser does not support specification "null”version ..
- java.lang.UnsupportedOperationException