Intellij idea 使用IntelliJ IDEA中的导入语句创建新的实时模板

Intellij idea 使用IntelliJ IDEA中的导入语句创建新的实时模板,intellij-idea,code-templates,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\u NAME$配置为使用clas

下面是我要移植的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\u NAME$
配置为使用
className()
作为其表达式

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

根据,它只打算使用完全限定的表达式。我试过了,这对我很有效:

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);

如果您想自己尝试,请注意,首先必须通过编辑变量将
CLASS\u NAME
定义为
className()
。还要确保您允许通过更改(在底部)使用Java声明的Live模板。以下是最终设置的屏幕截图:


对于apache commons日志记录,请使用:

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

为给新访客节省一点时间:现在需要对已接受的答案进行一些更改。
转到
设置->编辑器->实时模板
,选择
其他
,添加模板:

private static final org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger($CLASS_NAME$.class);$END$
然后,按左侧的
Edit Variables
,将
CLASS\u NAME
的表达式设置为
className()
毕竟,将底部的上下文设置为
Java->Declaration
(以及
Groovy->Declaration
(如果需要)。
导入将在插入时神奇地生成。

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

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

@org.junit.Test
当$CONDITION$()时,公共void应为$EXPR${
Assert.assertThat(null,org.hamcrest.CoreMatchers.is(org.hamcrest.CoreMatchers.nullValue());
}

在这里,我感到非常不安,因为我不明白IntelliJ为什么不能神奇地生成适当的导入。你的建议不仅完成了我的尝试,而且比我希望的要好。这样,它更加明确,没有模棱两可的余地。很好@KrishPrabakar在问题中,类_NAME被假定为已经定义为className()。我现在添加了一个例子,它本身应该有助于理解答案。@PhilippClaßen是的,它确实有帮助now@PhilippClaß嗯,类路径被改变了。我还添加了更多关于模板配置的信息。谢谢你的类名技巧。没那么明显!