我尝试将对象添加到 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(Unknown Source) java.util.AbstractList.add(Unknown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
最佳答案
不是每个 List
实现支持 add()
方法。
一个常见的示例是 Arrays.asList()
返回的 List
:据记录不支持任何结构修改(即删除或添加元素)(强调我的):
Returns a fixed-size list backed by the specified array.
即使这不是您尝试修改的特定 List
,答案仍然适用于其他不可变或仅允许某些选定更改的 List
实现。
您可以通过阅读 UnsupportedOperationException
的文档来了解这一点和List.add()
,它将其记录为“(可选操作)”。 List
文档顶部解释了该短语的确切含义。
作为解决方法,您可以将列表的副本创建为已知可修改的实现,例如 ArrayList
:
seeAlso = new ArrayList<>(seeAlso);
关于Java List.add() UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55200390/