2013-06-12 231 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()返回一個固定大小的列表。你不能添加元素。