(点击
上方蓝字
,快速关注我们)
作者:伯乐在线 - 肖汉松
如有好文章投稿,请点击 → 这里了解详情
前言
Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。下面我来介绍一下Live Templates的用法。
基本使用
IDEA 自带很多常用的动态模板,在 Java 代码中输入fori,回车就会出现
for
(
int
i
=
0
;
i
;
i
++
)
{
}
按Tab可以在各个空白处跳转,手动填值。
自定义 Template
官方自带模板毕竟不能满足我们个人编码风格的需要,Live Templates提供了变量函数的方式供我们自定义。
简单用法
新增自定义模板,首先需要填写触发单词(即 Abbreviation),描述是可选的,然后定义模板的上下文,点击define选择Java,这样在编辑 Java 的时候就会触发当前模板,定义完上下文之后,就可以填写模板了。
下面列举几个我常用的简单模板
==========
out
>
----------
System
.
out
.
println
($
END
$)
==========
pfs
>
----------
private
final
static
String
$
varName
$
=
"$var$"
;`
==========
privateField
>
----------
/**
* $COMMENT$
*/
@
Getter
@
Setter
private
$
TYPE
$
$
NAME
$;
==========
main
>
----------
public
static
void
main
(
String
[]
args
)
{
$
END
$
}
==========
模板支持变量的定义,使用$$包围的字符表示一个变量。$END$是一个特殊的预定义变量,表示光标最后跳转的位置。每个变量的位置都可以跳转过去。
高级用法
如果你用过 vim 的Code Sinppet插件,你会发现模板里面是可以执行函数的,强大的 Live Templates当然也支持,而且 IDEA 能够感知代码的语义,例如说当前编辑的函数的参数。但这一点就能够让我们玩出花来。我们从易到难来研究模板函数的功能。
前面我们提到的变量可以绑定函数,配置方式如上图所示。
快速声明变量
声明变量是一个常用的操作,特别是需要声明变量需要加注解,注释的时候,这些代码写起来就很枯燥。下面是我定义的模板:
osgiRef
>
----------
/**
* $END$
*/
@
OsgiReference
@
Setter
private
$
TYPE
$
$
NAME
$;
乍一看这个模板跟我上面定义的privateField差不多,唯一的不同在于我给这些变量绑定了函数。
下面我们演示一下,我们先拷贝当前类名,然后输入osgiRef
快速声明 logger
声明 logger 也是一个常用的操作,上面我们是利用了粘贴函数来快速声明变量,现在我们来利用另一个函数className(),顾名思义,它的作用就是返回当前类名。
logger
>
----------
/** logger */
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
($
CLASS
$.
class
);
最强大的 groovyScript()
如果说上面用到的函数提供的能力有限,不够灵活,那么groovyScript()提供了一切你想要的能力,它支持执行 Groovy 脚本处理输入,然后输出处理后的字符串。
groovyScript
(
"code"
,
...)
|
code
|
一段
Groovy
代码或者
Groovy
脚本代码绝对路径
|
|
...
|
可选入参,这些参数会绑定到
`
_1
,