首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Intellij IDEA建议在我使用Java8的时候用'List.of‘代替'Collections.unmodifiableList’?

为什么Intellij IDEA建议在我使用Java8的时候用'List.of‘代替'Collections.unmodifiableList’?
EN

Stack Overflow用户
提问于 2021-04-29 14:21:21
回答 2查看 78关注 0票数 1

我使用的是java 8,下面是我的代码:

代码语言:javascript
运行
复制
final List<PropertyDescriptor> descriptors = new ArrayList<>();
descriptors.add(MY_PROPERTY);
this.descriptors = Collections.unmodifiableList(descriptors);

但是IDEA建议用java 8中没有的List.of来代替它,我有点困惑为什么IDEA会这么说呢?任何想法都将是有帮助的,并提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2021-04-29 15:09:45

您的抱怨似乎是,IntelliJ建议使用Java9和更高版本中提供的特性,但您只想为Java8构建。

将项目语言级别设置为8 - Lambdas, type annotations etc.

在IntelliJ的项目中,有多个地方您必须设置要考虑或使用的特定版本的Java。不幸的是,由于IntelliJ缺少任何通用的"set my project to Java version x“特性,您必须手动尝试每一种方法。

经过一些实验后,我发现我可以通过将文件>项目结构>项目设置>项目>项目语言级别设置为9 - Modules, private methods in interfaces etc.来引起类似您的情况。➥。

我建议检查该设置。验证8 - Lambdas, type annotations etc.

另外,请注意上面设置的Project SDK设置。这应该设置为用于Java 8的JDK。

然后选中文件> ProjectStructure > ProjectSettings >模块->源>语言级别设置为8 - Lambdas, type annotations etc.

另一个要检查的地方是Preferences/Settings > Build,Execution,Deployment > Compiler > Java Compiler

应将

  • 项目字节码版本设置为与语言相同level.
  • Per-module字节码版本应将目标字节码版本设置为8.

如果使用Apache Maven作为依赖项管理器和构建配置器,请将POM中的这些元素设置为8

代码语言:javascript
运行
复制
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>

在Maven工具的更高版本中,上面的两个元素可能会被以下单个元素所取代:

代码语言:javascript
运行
复制
<maven.compiler.release>8</maven.compiler.release>
票数 3
EN

Stack Overflow用户

发布于 2021-04-29 15:01:10

我不能用Intellij IDEA 2021.1重现你的问题。它建议当语言级别为9或更高时使用List.of,而当语言级别为8时则不建议使用。

您可能在项目设置或模块设置中使用比8更高的语言级别。两者都需要设置为Java8。有关如何在this中设置语言级别的信息,请参阅Intellij帖子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67311970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档