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。

      例子:java

package com.test;ide

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

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
      }
}three

运行后,抛出异常以下:rem

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)io

 

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

List arrayList = new ArrayList(a);thread

相关文章
相关标签/搜索