IntelliJ静态导入完成


78

在Eclipse中,我能够注册一组用于静态导入自动完成的类,例如Math。,断言。,EasyMock。*

启用此功能后,我可以命中ctrl-space assertEquals,pow,createMock等,作为有效的代码补全出现。

我正努力在IntelliJ中找到它,但可以肯定它必须存在。有人可以帮忙吗?

谢谢!

Answers:


62

版本> = 11:

Settings -> Code Style -> Java -> Imports (tab)

版本<11

Settings -> Code Style -> Imports

窗格中间是“要使用带有'*'导入的软件包”表。您可以在此处添加标准类名的条目,然后在静态框内打勾。现在,此类中的所有静态方法都可用于自动完成。

(我不确定,静态导入如何与指定包一起工作,因为我从未尝试过,但是我不明白为什么不这样做。指定超级包并勾选“ with subpackages”选项可以变得更加有趣。)


8
是否可以将IntelliJ配置为仅添加方法的静态导入,而不是*
马特b

6
在版本11中,我在Code Style -> Java一个Imports选项卡下看到它。我现在不记得这是v10中的样子,还是我的描述草率,或者它过去是否稍有不同。拥有IntelliJ早期版本的人可以随时编辑此答案。
Andrzej Doyle

2
在版本13:Ctrl + Space中,查看下拉菜单底部的小文本,它告诉您“要静态导入Alt + Enter”。因此,组合键为Ctrl + Space,Alt + Enter
user1016765

3
在我的版本13.1.3中,只有Alt + ENTER可以正常工作。您可以选择静态导入,.*如果您在上课时按Alt + ENTER(替换所有内容,除非会导致名称冲突的地方,这很不错)。
Maarten Bodewes,2014年

6
在IntelliJ 2016中,它是设置->编辑器->代码样式->导入。不幸的是,添加的静态条目org.junit.Assert似乎无效:自动填充功能asse将扩展为Assert.assertEquals,而不是assertEquals使用静态导入打开Assert.*
Jorn 2016年

48

Alt + Enter会成功的 首先,您必须具有整个表达式,以及Alt + Enter要静态导入的方法的匹配项。

statically import IntelliJ


8
有没有一种方法可以配置它,使其默认情况下可以导入,而不必每次都按Alt + Enter?
悉达多

不幸的是,我不知道这种功能。
nucatus '16

3
这似乎已经停止在IDEA 2018.1中工作,任何想法如何找回它
David Roussel

38

如果您使用的是IntelliJ 10,请尝试以下操作:

assEq<Ctrl-Alt-Space>

默认情况下,从结果弹出列表中接受建议将插入ClassName.methodName()引用(您可以使用Alt-Enter意图将其转换为静态导入)。

您也可以从完成列表中插入静态导入的方法,方法是在完成菜单中选择“右”,然后选择“静态导入”:

在此处输入图片说明

请注意,从类(Assert.assertSame)静态导入单个方法后,该类的其他静态方法(如Assert.assertEquals)将包含在“常规”代码完成(Ctrl-Space)中。


哪一步不起作用?建议使用Ctrl-Alt-space或选择静态导入选项来获取assertEquals()?
Pakka Pakka 2014年

第一步不起作用,但是您通过评论给了我解决方案。实际上,您在答案中写了CTRL + SHIFT + SPACE,但在注释中写了CTRL + ALT + SPACE。最后一个工作正常。
Paolo Fulgoni 2014年

哇。使用IntelliJ已有18个月了,这是我第一次了解此出色功能。我如何在菜单中找到或通过Ctrl+Shift+A
kevinarpe 2014年

由于历史原因,该操作被命名为Class Name Completion
Pakka Pakka

33

对于Intellij 12,只需点击即可<ctrl + spacebar(twice)>。然后导入方法静态点击<alt + return>。否则,只需按Enter键即可插入该方法的标准名称。

更新: 有时也可以使用<alt + return>



6

只需做一次引用,然后将插入号放在类名(即Math)上,按alt + enter并选择“为'java.lang.Math'添加按需静态导入。Intellij将添加

import static java.lang.Math.*;

到文件顶部。


8
但是我仍然必须在每个文件中都这样做:(
Scruffers 2010年

0

现在可以添加带有静态导入的实时模板

您必须在选项中检查静态导入

@org.junit.Test
public void should$EXPR$when$CONDITION$() {
    org.junit.Assert.assertThat(null, org.hamcrest.CoreMatchers.is(org.hamcrest.CoreMatchers.nullValue())); 
}

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.