【问题标题】:Can anyone explain the behavior of alt-enter in intellij when trying to import an unresolved symbol?尝试导入未解析的符号时,谁能解释 intellij 中 alt-enter 的行为?
【发布时间】:2019-04-27 00:53:38
【问题描述】:

我目前正在将一个相当大的 java 项目移植到 scala 中,所以不出所料,我遇到了很多未解析的符号。我正在使用 intellij,它有一个有用的工具可以帮助您查找导入,您单击未解析的符号,然后按 alt-enter。这很棒,但根据我的经验,它的运作方式极其不可靠。

有时它看起来像这样,您可以简单地按 Enter 键(也许在某些向下之后),它会导入您想要的内容:

但有时它看起来像这样,您必须先进入 Import class 选项,然后才能看到上一张图片中的菜单:

当你得到这个版本时,取决于你在做什么,它的选项和顺序可能会有很大的不同。我只是希望我能始终如一地理解为什么 IDE 有时会做一件事,而其他时候会做另一件事……对我可以更改的行为或设置的任何见解以使 intellij 以可理解的方式运行?

【问题讨论】:

    标签: scala intellij-idea


    【解决方案1】:

    第二个屏幕显示一个标准弹出窗口,其中包含可用的Intention actions。每次调用 Alt + Enter 时都会重新计算它。

    第一个屏幕上的选择器由Auto Import 弹出窗口提供,您可以在File | Settings | Editor | General | Auto Import | Java | Show import popup for classes 中将其关闭(尽管它确实应该在 Scala 部分中)。它试图在后台为未解析的引用找到适用的类,并明确询问您是否要导入某些内容。

    它更容易被发现,而且通常更方便。例如,它允许您粘贴一个 sn-p 代码并添加所有相关的导入,而无需移动插入符号。此弹出窗口可能会被取消,但应在任何击键后重新出现。

    【讨论】:

    • 酷,谢谢,也许我可以将它们设置为不同的快捷方式,这样我就不会觉得完全随机了。
    【解决方案2】:

    我不知道该告诉你什么,除了有时 IntelliJ 理解你想要导入给定的类,有时它会为你提供创建所述对象。

    在这种情况下,没有任何上下文,我建议您创建一个对象/类ListBuffer(因为谁说您想要在这一点上导入一个?)或导入一个(哪一个是 IntelliJ 在屏幕 n°1 中提供的)或仍需要在某处定义的值/变量或无参数方法(一种名为 ListBuffer 的 getter,其结果将存储在 @ 987654322@).

    如果你一直想让 IntelliJ 导入一些东西,也许可以尝试像这样指定对象的类型:

    val test: ListBuffer = ListBuffer()
    

    希望这会有所帮助。

    【讨论】:

    • 它与该代码具有相同的行为,有时它会尝试导入东西,然后它会提供更多选项。
    • 也许他第一次提供一个,第二次提供后者。这可能取决于您对 IntelliJ 的使用,我认为这里有一些智能。只是不要在这个问题上浪费太多时间,这不是一个真正的问题;)
    • 是的,我只是好奇,因为这是一种奇怪的行为,显然这并不重要
    猜你喜欢
    • 2015-01-13
    • 2020-01-22
    • 2022-01-05
    • 2018-05-07
    • 1970-01-01
    • 2014-06-28
    • 2018-10-28
    • 1970-01-01
    相关资源
    最近更新 更多