Java List.add() UnsupportedOperationException
在Java编程中,List是一种常用的数据结构,它可以用来存储一组有序的元素。List接口提供了许多方法来操作这些元素,例如添加、删除、修改等。然而,有时当我们尝试使用List的add()方法来添加元素时,可能会遇到UnsupportedOperationException异常。UnsupportedOperationException是Java中的一个异常类,它表示不支持的操作。当我们调用List的add()方法时,如果该List不支持添加操作,就会抛出这个异常。案例代码如下:javaimport java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { List list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); try { list.add("grape"); } catch (UnsupportedOperationException e) { System.out.println("UnsupportedOperationException: " + e.getMessage()); } }} 以上代码创建了一个List对象list,并使用add()方法添加了三个元素:apple、banana和orange。然后,尝试再次使用add()方法添加一个元素grape。由于List对象list是ArrayList的实例,而ArrayList是支持添加操作的,所以不会抛出UnsupportedOperationException异常。下面我们将介绍一些可能会导致UnsupportedOperationException的情况,并提供解决方法。1. 不可修改的List有些List实现是不可修改的,例如Arrays.asList()方法创建的List。在这种情况下,调用add()方法会导致UnsupportedOperationException异常。解决方法是使用可修改的List实现,例如ArrayList。javaimport java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { List list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); List fixedList = List.of("apple", "banana", "orange"); try { fixedList.add("grape"); } catch (UnsupportedOperationException e) { System.out.println("UnsupportedOperationException: " + e.getMessage()); } }} 在上面的代码中,我们创建了一个不可修改的List fixedList,然后尝试使用add()方法添加一个元素grape。由于fixedList是不可修改的,所以会抛出UnsupportedOperationException异常。为了解决这个问题,我们可以使用可修改的List实现ArrayList来替代不可修改的List。2. 只读List有些List实现是只读的,例如Collections.unmodifiableList()方法创建的List。在这种情况下,调用add()方法同样会导致UnsupportedOperationException异常。解决方法是使用可修改的List实现,例如ArrayList。javaimport java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main { public static void main(String[] args) { List list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); List readOnlyList = Collections.unmodifiableList(list); try { readOnlyList.add("grape"); } catch (UnsupportedOperationException e) { System.out.println("UnsupportedOperationException: " + e.getMessage()); } }} 在上面的代码中,我们创建了一个只读的List readOnlyList,然后尝试使用add()方法添加一个元素grape。由于readOnlyList是只读的,所以同样会抛出UnsupportedOperationException异常。为了解决这个问题,我们可以使用可修改的List实现ArrayList来替代只读的List。在Java编程中,当我们使用List的add()方法时,有时会遇到UnsupportedOperationException异常。这通常是因为List对象不支持添加操作,可能是因为它是不可修改的List或只读的List。为了解决这个问题,我们可以使用可修改的List实现,例如ArrayList。希望本文能够帮助您理解Java List.add() UnsupportedOperationException异常,并提供了解决方法。