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

时间:2013-06-19 11:52:32

标签: intellij-idea code-templates

这是我要移植的Eclipse模板:

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

我在IDEA的当前版本如下:

private static final Logger LOG = Logger.getLogger($CLASS_NAME$.class);$END$

其中$CLASS_NAME$配置为使用className()作为其表达式。

不幸的是,我没有找到有关添加import语句的任何文档。是否存在与Eclipse ${:import(...)}等效的东西?

4 个答案:

答案 0 :(得分:93)

根据this post,似乎只打算使用完全限定的表达式。我试了一下,这对我有用:

private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger($CLASS_NAME$.class);$END$

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

import org.apache.log4j.Logger;
// ...
private static final Logger LOG = Logger.getLogger(MyClass.class);

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

现在可以使用静态导入添加实时模板

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

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

enter image description here

答案 3 :(得分:-2)

对于apache commons日志记录使用:

private static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory.getLog($CLASS_NAME$.class);$END$