2011-05-23 66 views
69

有什么办法中的IntelliJ Live templates使用默认令牌值?比如我有一个声明,我想创造几乎为每个类别的私有变量以下现场模板:的IntelliJ动态模板

private static final Logger logger = Logger.getLogger($CLASS$.class)

当使用这个活的模板似乎没有必要键入$CLASS$每一次,因为它可以从范围或文件名中的类派生。我想知道是否可以在实时模板中使用环境定义的标记作为默认值?

回答

97

检查其他一些模板已经使用当前的类名:

enter image description here

+3

感谢,其中所有可用的表达式定义? – Leonid 2011-05-23 13:29:01

+6

http://www.jetbrains.com/idea/webhelp/edit-template-variables-dialog.html – CrazyCoder 2011-05-23 14:37:27

53

的log4j:

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

SLF4J:

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class); 

请确保您设置的适用范围到Java和缩短FQ名跳过的定义被启用。

+3

我喜欢的除了本文提到设立恩表达了合理的默认填充变量。 https://coderwall.com/p/hzmhbw – Snekse 2014-08-08 21:48:54

+0

@Snekse这是一个很好的补充。欢迎您通过编辑来改进我的答案。 – Nowaker 2014-08-09 02:31:29

+0

这个答案实际上并不回答提问者的问题:要用类名自动填充'$ CLASS_NAME $'变量,您需要将与$ CLASS_NAME $'变量关联的“Expression”设置为'className() '。请参阅CrazyCoder的截图回答。 – 2016-12-09 10:08:47

3

的log4j 2:

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger($CLASS_NAME$.class); 
+0

这个答案并没有真正回答提问的问题:你需要设置相关的'$ CLASS_NAME $'变量“表达”是'的className类名来自动填充的'$ CLASS_NAME $'变量() '。请参阅CrazyCoder的截图回答。 – 2016-12-09 10:09:09