- Class UnsupportedOperationException
- Constructor Summary
- Method Summary
- Methods declared in class java.lang.Throwable
- Methods declared in class java.lang.Object
- Constructor Details
- UnsupportedOperationException
- UnsupportedOperationException
- UnsupportedOperationException
- UnsupportedOperationException
- Class UnsupportedOperationException
- Constructor Summary
- Method Summary
- Methods declared in class java.lang.Throwable
- Methods declared in class java.lang.Object
- Constructor Details
- UnsupportedOperationException
- UnsupportedOperationException
- UnsupportedOperationException
- UnsupportedOperationException
- Java UnsupportedOperationException
- How to Fix the Unsupported Operation Exception in Java
- What Causes UnsupportedOperationException
- UnsupportedOperationException Example
- How to Resolve UnsupportedOperationException
- Track, Analyze and Manage Errors With Rollbar
Class UnsupportedOperationException
This class is a member of the Java Collections Framework.
Constructor Summary
Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause ).
Method Summary
Methods declared in class java.lang.Throwable
Methods declared in class java.lang.Object
Constructor Details
UnsupportedOperationException
UnsupportedOperationException
UnsupportedOperationException
Constructs a new exception with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this exception’s detail message.
UnsupportedOperationException
Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause ). This constructor is useful for exceptions that are little more than wrappers for other throwables (for example, PrivilegedActionException ).
Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2023, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.
Class UnsupportedOperationException
This class is a member of the Java Collections Framework.
Constructor Summary
Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause ).
Method Summary
Methods declared in class java.lang.Throwable
Methods declared in class java.lang.Object
Constructor Details
UnsupportedOperationException
UnsupportedOperationException
UnsupportedOperationException
Constructs a new exception with the specified detail message and cause. Note that the detail message associated with cause is not automatically incorporated in this exception’s detail message.
UnsupportedOperationException
Constructs a new exception with the specified cause and a detail message of (cause==null ? null : cause.toString()) (which typically contains the class and detail message of cause ). This constructor is useful for exceptions that are little more than wrappers for other throwables (for example, PrivilegedActionException ).
Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2023, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.
Java UnsupportedOperationException
The UnsupportedOperationException class is a member of the Java Collections Framework since Java version 1.2. It extends RuntimeException; hence, it is an unchecked exception and needs not to be declared in a method’s or a constructor’s throws clause.
public class UnsupportedOperationException extends RuntimeException
1. Root Cause of UnsupportedOperationException
As the name implies, UnsupportedOperationException occurs when a requested operation is not supported in a class or interface. It is a common exception that occurs while working with collections such as List, Queue, Set and Map. For example, if we try to modify an unmodifiable Map or List, this exception is thrown.
One of the most common occurrences is while using Arrays.asList() method. Since asList() method returns a fixed-size unmodifiable List, the add() or remove() methods are not supported. If we try to add or remove elements from this list, it will throw UnsupportedOperationException.
List list = Arrays.asList(new String[] < "a", "b", "c" >); list.add("d"); //or list.remove("a");
We will get the UnsupportedOperationException in the console.
Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111) at UnsupportedOperationExceptionExample.main(UnsupportedOperationExceptionExample.java:8)
2. Resolving UnsupportedOperationException
The UnsupportedOperationException can be resolved by using a mutable collection, such as ArrayList. If we have unmodifiable collections, we can wrap them under a mutable alternative collection class.
For example, the unmodifiable List in the earlier example can be passed to a new ArrayList object, a mutable collection.
List list = Arrays.asList(new String[] < "a", "b", "c" >); List arraylist = new ArrayList<>(list); //Works fine arraylist.add("d"); arraylist.remove("a");
Here, a new ArrayList object is created using the unmodifiable list returned from the Arrays.asList() method. When a new element is added to the ArrayList, it works as expected and resolves the UnsupportedOperationException.
3. Conclusion
In this article, we learned about UnsupportedOperationException, what are the causes for this and how to prevent it in our code.
How to Fix the Unsupported Operation Exception in Java
An UnsupportedOperationException is a runtime exception in Java that occurs when a requested operation is not supported. For example, if an unmodifiable List is attempted to be modified by adding or removing elements, an UnsupportedOperationException is thrown. This is one of the common exceptions that occur when working with Java collections such as List, Queue, Set and Map.
The UnsupportedOperationException is a member of the Java Collections Framework. Since it is an unchecked exception, it does not need to be declared in the throws clause of a method or constructor.
What Causes UnsupportedOperationException
An UnsupportedOperationException is thrown when a requested operation cannot be performed because it is not supported for that particular class. One of the most common causes for this exception is using the asList() method of the java.util.Arrays class. Since this method returns a fixed-size unmodifiable List , the add() or remove() methods are unsupported. Trying to add or remove elements from such a List will throw the UnsupportedOperationException exception.
Other cases where this exception can occur include:
- Using wrappers between collections and primitive types.
- Trying to remove elements using an Iterator .
- Trying to add, remove or set elements using ListIterator .
UnsupportedOperationException Example
Here’s an example of an UnsupportedOperationException thrown when an object is attempted to be added to an unmodifiable List :
import java.util.Arrays; import java.util.List; public class UnsupportedOperationExceptionExample < public static void main(String[] args) < String array[] = ; List list = Arrays.asList(array); list.add("d"); > >
Since the Arrays.asList() method returns a fixed-size list, attempting to modify it either by adding or removing elements throws an UnsupportedOperationException .
Running the above code throws the exception:
Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111) at UnsupportedOperationExceptionExample.main(UnsupportedOperationExceptionExample.java:8)
How to Resolve UnsupportedOperationException
The UnsupportedOperationException can be resolved by using a mutable collection, such as ArrayList , which can be modified. An unmodifiable collection or data structure should not be attempted to be modified.
The unmodifiable List returned by the Arrays.asList() method in the earlier example can be passed to a new ArrayList object, which can be modified:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class UnsupportedOperationExceptionExample < public static void main(String[] args) < String array[] = ; List list = Arrays.asList(array); List arraylist = new ArrayList<>(list); arraylist.add("d"); System.out.println(arraylist); > >
Here, a new ArrayList object is created using the unmodifiable list returned from the Arrays.asList() method. When a new element is added to the ArrayList , it works as expected and resolves the UnsupportedOperationException. Running the above code produces the following output:
Track, Analyze and Manage Errors With Rollbar
Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today!