2013-06-12 181 views
5

我有下面的代码示例:列表投掷UnsupportedOperationException异常

String[] patternArray = {"1","2","3"}; 
List<String> patternCheck = Arrays.asList(patternArray); 
patternCheck.add("4"); 

及以下异常被抛出

Exception in thread "main" java.lang.UnsupportedOperationException 
    at java.util.AbstractList.add(Unknown Source) 
    at java.util.AbstractList.add(Unknown Source) 

我的问题是,为什么我不能够以新的字符串添加到我的名单?

回答

5

Arrays.asList(..)返回一个不可修改的集合。如果你想修改它,做一个副本:

List<String> list = new ArrayList<>(Arrays.asList(..)) 

或者,你可以使用guava

List<String> list = Lists.newArrayList("1", "2", "3"); 
+0

不应该这是参数化('ArrayList ')? –

+4

自Java 7以来 - 不,从左侧推断类型 – Bozho

+0

谢谢..您的解决方案可行。 – commit

7

因为Arrays.asList(patternArray);返回固定大小的列表,例如,你不能添加更多的元素。

+1

是太快了! – sanbhat

+0

谢谢了.. – commit

0

Arrays.asList()返回一个不可修改的固定大小列表。

0

Arrays.asList()返回一个固定大小的列表。你不能添加元素。