UnsupportedOperationException на наборе

При изучении Collection API, мы находим что некоторые методы (add, remove...) может бросить a java.lang.UnsupportedOperationException если текущая реализация Набора не поддерживает те технические возможности.

Есть ли, на самом деле, в JDK, бетоне Collection это не поддерживает те методы?

Большое спасибо за Ваши ответы.

28
задан Bozho 22 May 2010 в 11:47
поделиться

3 ответа

Очевидными примерами являются реализации, возвращенные, скажем, из Collections.unmodifiableCollection () и других подобных методов. Методы, изменяющие коллекцию , вызывают это исключение.

21
ответ дан 28 November 2019 в 02:48
поделиться

Да. Например, когда вы вызываете Collections.unmodifiableList (list) , возвращаемый список не поддерживает add (..)

Эти коллекции, однако, в основном являются частными классами, которые не отображаются в API, поэтому вы не можете их создать.

4
ответ дан 28 November 2019 в 02:48
поделиться

Помимо коллекций, возвращаемых методами Collections.unmodifiable * , есть еще пара интересных случаев, когда UnsupportedOperationException Фактически выбрасывается :

  • представления коллекций Map , доступ к которым осуществляется через entrySet () , keySet () и значения ( ) может иметь элементы, удаленные, но не добавленные,
  • представление списка, возвращаемое Arrays.asList , не может содержать ни добавленных, ни удаленных элементов,
  • более того, объекты, полученные из Методы Collections.empty * и Collections.singleton * также помечены как "неизменяемые" , поэтому - хотя это явно не указано в документации API - я полагаю, что эти бросают исключение также при попытках их изменения.
28
ответ дан 28 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: