我正在尝试将 Oracle JDK 11 应用程序迁移到 JDK 17.0.7,当我尝试访问 java.utils.Set 中的 add() 时,它抛出
java.lang.UnsupportedOperationException
Run Code Online (Sandbox Code Playgroud)
我查了一下Stackoverflow,发现java.util.Set的实现还没有完全支持add()函数,它被标记为可选。
我的问题是,哪个 java 供应商的 Java 17 已经支持或实现了 java Set add() 方法?
我的应用程序中有相当多的 Java 对象需要这个函数。
如果有人有想法,请指教。
它不依赖于供应商,而是依赖于实现接口的特定类Set:某些集合是不可修改的,因此您不能向它们添加任何内容。Javadoc 指定了每个实现类的任何使用限制。例如,显然,Set返回的aCollections.unmodifiableSet()是不可修改的。
也许在升级 Java 的过程中,您还升级了一些依赖项,并且该依赖项的新版本返回一个不可修改的Set. 检查返回该方法的 Javadoc Set。
您可能需要修改代码并将其内容复制Set到新的可修改实例中,例如:
Set<YourClassGoesHere> newSet = new HashSet<>(oldSet);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |