尝试导入未解析的符号时,谁能解释Intellij中alt-enter的行为?

时间:2019-04-19 05:42:28

标签: scala intellij-idea

我目前正在将相当大的Java项目移植到scala,因此,毫无疑问,我遇到了许多未解决的符号。我正在使用intellij,它有一个有用的工具来帮助您找到导入,单击未解析的符号,然后按alt输入。很好,但是以我的经验,它的运行方式极其不可靠。

有时看起来像这样,您只需按Enter(也许在按下几下后),它就会导入您想要的内容:

Sometimes it looks like this

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

or this

当您获得此版本时,具体取决于您在选项和顺序上所执行的操作。我只是希望我对为什么IDE有时会做一件事而在其他时间却做另一件事有一致的了解...对行为或设置的任何见解,我都可以更改以使intellij以一种可理解的方式运行?

2 个答案:

答案 0 :(得分:2)

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

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

enter image description here

它更容易发现,而且通常更方便。例如,它允许您粘贴一段代码并添加所有相关的导入,而完全不移动插入符号。该弹出窗口可能会被取消,但是在任何按键之后都应重新出现。

答案 1 :(得分:0)

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

在这种情况下,如果没有任何上下文,我将为您提供创建对象/类ListBuffer的方法(因为此时谁说您想要导入一个对象/类?)或导入一个(这是IntelliJ在屏幕n°1中提供的内容)或仍需要在某处定义的值/变量或无参数方法(一种名为ListBuffer的吸气剂,其结果将被存储在test中。

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

val test: ListBuffer = ListBuffer()

希望这会有所帮助。