【问题标题】:Why am I needing to replace List.of() with Arrays.asList()? [duplicate]为什么我需要用 Arrays.asList() 替换 List.of()? [复制]
【发布时间】:2020-03-27 02:20:33
【问题描述】:

我读过What is the difference between List.of and Arrays.asList?

我没有得到的是为什么,在我的 Maven pom.xml 中的一些依赖项升级之后,我的所有

List.of(FLIGHT1_SPEND_AGG, FLIGHT1_IMPRESSIONS_AGG)

不再编译。当我在 IntelliJ 中键入 List. 时,自动完成只会出现 class 成员。我想也许我没有导入java.util.List?所以明确指定它,但仍然:

我使用的是 Java 11,我看到该方法存在于此处:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html

为什么我似乎无法使用它?我一定是在做傻事……

【问题讨论】:

  • 哦,是因为long是可变的吗?但是……它之前是如何编译的? (依赖项的哪些变化可能会改变这种情况?)
  • 可能是因为您的 pom 没有指定 Java 11,并且当您重新导入升级时,它会重置 IntelliJ 中的语言级别。
  • 有时 IntelliJ 会导致问题,即使库在类路径中也找不到函数。也许尝试重新启动 IDE 或清除 IDE 缓存?
  • @StopHarmingMonica - 就是这样。如果您想添加您的答案作为答案,我可以接受您的。

标签: java arrays dependencies package java-11


【解决方案1】:

看起来您在 ide 中定义了 Java 版本,但在 pom 中没有定义(至少不正确)

您的 pom 需要指定 maven-compiler-plugin 以及源和目标 java 版本。

定义应该类似于这个:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>11</source>
        <target>11</target>
    </configuration>
</plugin>

从 maven 更新后,您的 IDE 使用 pom 中定义的 Java 版本或使用默认版本(对于某些版本的编译器插件与 Java 5 一样旧),覆盖您之前设置的任何内容。

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 2021-02-23
    • 2012-03-16
    • 2011-02-12
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多