2013-06-12 2 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() возвращает список фиксированного размера. Вы не можете добавлять к нему элементы.

Смежные вопросы