Исключение UnsupportedOperationException выбрасывается, когда операция не поддерживается или не может быть выполнена на данной коллекции. Вот несколько примеров, когда может возникнуть UnsupportedOperationException:
- Изменение коллекции только для чтения:
import java.util.Collections;
import java.util.List;
public class UnsupportedOperationExceptionExample {
public static void main(String[] args) {
List<String> readOnlyList = Collections.singletonList("элемент");
readOnlyList.add("новый элемент");
// Выбросится UnsupportedOperationException }
}
В этом примере мы создаем список readOnlyList с помощью метода Collections.singletonList(), который возвращает коллекцию только для чтения. Попытка добавления нового элемента вызовет UnsupportedOperationException, поскольку изменение коллекции только для чтения запрещено.
- Использование неизменяемой коллекции из Java 9+:
import java.util.List;
public class UnsupportedOperationExceptionExample {
public static void main(String[] args) {
List<String> immutableList = List.of("элемент");
immutableList.add("новый элемент");
// Выбросится UnsupportedOperationException }
}
В этом примере мы используем метод List.of() из Java 9+, чтобы создать неизменяемый список immutableList. Попытка добавления нового элемента вызовет UnsupportedOperationException, так как неизменяемые коллекции не поддерживают изменение своего содержимого.
- Использование неизменяемой коллекции из Google Guava:
import com.google.common.collect.ImmutableList;
import java.util.List;
public class UnsupportedOperationExceptionExample {
public static void main(String[] args) {
List<String> immutableList = ImmutableList.of("элемент");
immutableList.add("новый элемент");
// Выбросится UnsupportedOperationException }
}
В этом примере мы используем метод ImmutableList.of() из библиотеки Google Guava для создания неизменяемого списка immutableList. Попытка добавления нового элемента вызовет UnsupportedOperationException.
- Использование неподдерживаемой операции на специфичной реализации коллекции:
import java.util.LinkedList;
import java.util.List;
public class UnsupportedOperationExceptionExample {
public static void main(String[] args) {
List<String> linkedList = new LinkedList<>();
linkedList.add("элемент1");
linkedList.add("элемент2");
List<String> subList = linkedList.subList(0, 1);
subList.clear(); // Выбросится UnsupportedOperationException }
}
В этом примере мы создаем связанный список linkedList и получаем его подсписок с помощью метода subList(). Попытка очистить подсписок вызовет UnsupportedOperationException, поскольку операция clear() неподдерживается для подсписков, возвращенных методом subList().
В каждом из этих примеров возникает UnsupportedOperationException при попытке изменить коллекцию или выполнить неподдерживаемую операцию на ней.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov