使用IntelliJ IDEA中的import语句创建新的实时模板

Phi*_*ßen 46 intellij-idea code-templates

这是我要移植的Eclipse模板:

${:import(org.apache.log4j.Logger)}
private static final Logger LOG = Logger.getLogger(${enclosing_type}.class);
Run Code Online (Sandbox Code Playgroud)

我在IDEA的当前版本如下:

private static final Logger LOG = Logger.getLogger($CLASS_NAME$.class);$END$
Run Code Online (Sandbox Code Playgroud)

where $CLASS_NAME$配置为className()用作其表达式.

不幸的是,我没有找到任何关于添加import语句的文档.有没有相当于Eclipse的东西${:import(...)}

Phi*_*ßen 99

根据这篇文章,似乎只打算使用完全限定的表达式.我试了一下,这对我有用:

private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger($CLASS_NAME$.class);$END$
Run Code Online (Sandbox Code Playgroud)

IDEA会自动缩短它并添加必要的import语句:

import org.apache.log4j.Logger;
// ...
private static final Logger LOG = Logger.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

  • 在这里,我感到非常沮丧,因为我无法弄清楚为什么IntelliJ没有_magically_生成适当的导入.你的建议不仅完成了我的尝试,这比我希望的更好.这样,它更明确,没有模棱两可的余地.太好了! (3认同)

cof*_*n21 5

只是为了为这里的新访客节省一点时间:已接受的答案现在需要一些更改。
转到Settings -> Editor -> Live Templates,选择others,添加模板:

private static final org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger($CLASS_NAME$.class);$END$
Run Code Online (Sandbox Code Playgroud)

然后,按Edit Variables左侧并设置CLASS_NAMEto的表达式className()
毕竟,将底部的上下文设置为Java -> DeclarationGroovy -> Declaration如果需要)。导入将在插入时神奇地生成。