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

如何修复Set.of()报错cannot find symbol: method of(String,String)

报错原因

Set.of()是Java 9及以上版本才加入java.util.Set接口的静态工厂方法,当前编译环境使用的JDK版本低于Java 9时,接口中不存在该方法定义,就会抛出找不到符号的编译错误。

解决步骤
  • 执行javac -version命令查看当前环境默认的编译器版本,如果返回版本号为1.8及更早版本,直接升级本地JDK到Java 9及以上即可解决。
  • 如果是Maven、Gradle这类构建工具管理的项目,除了检查本地JDK版本,还要确认构建配置中指定的源码编译版本、目标字节码版本是否被设置为Java 8及更低,配置和实际JDK版本不匹配也会触发该报错。
  • 若受项目约束必须使用Java 8环境,无法升级JDK版本,可替换为Java 8兼容的写法实现相同效果:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.Collections;

// 普通可修改Set
Set<String> existedFieldsValueList = new HashSet<>(Arrays.asList("field1", "field2"));

// 等效Set.of()的不可变Set
Set<String> existedFieldsValueList = Collections.unmodifiableSet(
    new HashSet<>(Arrays.asList("field1", "field2"))
);

补充说明:Set.of()创建的是不可变集合,不支持add、remove等修改操作,且入参不允许传入null值,和普通HashSet的行为有细微差异,替换写法时注意匹配业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:57:27