在这篇文章中,我们将带领您了解JavaList.add的全貌,包括UnsupportedOperationException的相关情况。同时,我们还将为您介绍有关add、delete操作报Unsupp
在这篇文章中,我们将带领您了解Java List.add的全貌,包括UnsupportedOperationException的相关情况。同时,我们还将为您介绍有关add、delete操作报UnsupportedOperationException的错、Arrays.asList 数组转集合 java.lang.UnsupportedOperationException错误、Arrays.asList()报错java.lang.UnsupportedOperationException、Arrays.asList给出UnsupportedOperationException的知识,以帮助您更好地理解这个主题。
本文目录一览:- Java List.add()UnsupportedOperationException
- add、delete操作报UnsupportedOperationException的错
- Arrays.asList 数组转集合 java.lang.UnsupportedOperationException错误
- Arrays.asList()报错java.lang.UnsupportedOperationException
- Arrays.asList给出UnsupportedOperationException
Java List.add()UnsupportedOperationException
我尝试将对象添加到List<String>
实例,但会引发UnsupportedOperationException
。有人知道为什么吗?
我的Java代码:
String[] membersArray = request.getParameterValues(''members'');List<String> membersList = Arrays.asList(membersArray);for (String member : membersList) { Person person = Dao.findByName(member); List<String> seeAlso; seeAlso = person.getSeeAlso(); if (!seeAlso.contains(groupDn)){ seeAlso.add(groupDn); person.setSeeAlso(seeAlso); }}
错误信息:
java.lang.UnsupportedOperationException java.util.AbstractList.add(未知源) java.util.AbstractList.add(未知源) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
答案1
小编典典并非每个List
实现都支持该add()
方法。
一个常见的示例是通过以下方式List返回的Arrays.asList()
:它被记录为不支持任何结构修改(即,删除或添加元素)(强调我的意思):
返回由指定数组支持的固定大小的列表。
即使这不是List你要修改的特定内容,答案仍然适用于List不可变或仅允许某些选定更改的其他实现。
你可以通过阅读的文档,了解这个UnsupportedOperationException
和List.add()
,其中记录了这是一个“(可选操作)”。该短语的确切含义在List文档顶部进行了说明。
解决方法是,你可以将列表的副本创建到已知的可修改实现中,例如ArrayList
:
seeAlso = new ArrayList<>(seeAlso);
add、delete操作报UnsupportedOperationException的错
add、delete操作报UnsupportedOperationException的错
addAll操作报UnsupportedOperationException错误
上面的代码,粗粗一看发现,没有什么bug
String temp="1,2,3”; List<String>list1 = Arrays.asList(temp.split(",")); list1.add("4");
- 1
- 2
- 3
可是报如下错误。就算报了错,也觉得没有错,难道list不能add吗?
后面才发现,其实不是不能add
,只要改变 list
大小的操作,都会报下面的错。
java.lang.UnsupportedOperationException
点进去看asList
的源码,发现asList
方法中返回了一个ArrayList
的对象。asList
的方法在java.util.Arrays
这个包中,在这个aslist
的方法的后面几行就是一个叫ArrayList
的内部类。
天啊,好坑啊。
@SafeVarargs @SuppressWarnings("varargs") public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } /** * @serial include */ private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable { private static final long serialVersionUID = -2764017481108945198L; private final E[] a; ArrayList(E[] array) { a = Objects.requireNonNull(array); } @Override public int size() { return a.length; } ....