You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中POST请求添加用户报错java.lang.UnsupportedOperationException

问题分析:向列表添加用户时抛出UnsupportedOperationException

使用Postman发送POST请求添加普通用户,请求体已正常接收,但执行列表add操作时抛出异常。

相关代码

@PostMapping
public Developer create(@RequestBody Developer developer) {
    System.out.println(developer);
    this.DEVELOPERS.add(developer);
    return developer;
}

报错日志

2022-09-11 23:19:53.444 ERROR 30036 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.UnsupportedOperationException] with root cause

java.lang.UnsupportedOperationException: null
    at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[na:na]
    at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.add(ImmutableCollections.java:147) ~[na:na] ...

原因

DEVELOPERS是不可变集合,比如通过List.of()、Arrays.asList()创建,或是Spring框架中某些方法返回的不可变集合实例。这类集合设计为只读,不支持add、remove等修改操作,调用时就会抛出UnsupportedOperationException。

解决方案

  1. 直接初始化可变集合
    将DEVELOPERS的初始化改为可变的ArrayList:
private List<Developer> DEVELOPERS = new ArrayList<>();
  1. 转换现有不可变集合
    如果DEVELOPERS是从其他不可变集合获取的,将其包装为可变集合:
// 假设原集合为immutableDevelopers
this.DEVELOPERS = new ArrayList<>(immutableDevelopers);

内容的提问来源于stack exchange,提问作者user19862959

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:51:33