Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。刚开始觉得它只是一个简单的Code Snippet,后来发现它支持变量函数配置,可以支持很复杂的代码生成。
基本使用
for (int i = 0; i < ; i++) {
}
自定义 Template
简单用法
==========
<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$
是一个特殊的预定义变量,表示光标最后跳转的位置。
每个变量的位置都可以跳转过去。
高级用法
但这一点就能够让我们玩出花来。
我们从易到难来研究模板函数的功能。
下面是我定义的模板:
<osgiRef>
----------
/**
* $END$
*/
@OsgiReference
@Setter
private $TYPE$ $NAME$;
-
clipboard():返回当前粘贴板的字符串
-
decapitalize():将输入的字符串首字母变为小写
<logger>
----------
/** logger */
private static final Logger LOGGER = LoggerFactory.getLogger($CLASS$.class);
最强大的 groovyScript()
groovyScript("code", ...)
| code | 一段Groovy代码或者Groovy脚本代码绝对路径 |
| ... | 可选入参,这些参数会绑定到`_1, _2, _3, ..._n`, 在 Groovy 代码中使用。|
然后执行 groovy 脚本获取类名。
<bean>
----------
<bean id="$id$" class="$REF$" />
decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard()))
,首先取
clipboard()
的值得到类的全引用,然后执行 groovy 代码
_1.tokenize('.')[-1]
(按.分割为字符串数组,然后取最后一个即可得到类名,然后用
decapitalize()
将首字母小写即可得到id。
<printContext>
---------------
LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$);
groovyScript("'\"' + _1.collect { it + ' = [\" + ' + it + ' + \"]'}.join(', ') + '\"'", methodParameters())
,就能够自动将当前函数的参数格式化后输出。
总结
一些更高级的用法还有待大家去发掘。
最后推广一波我写的代码生成插件CodeMaker,好好利用也能节省很多重复编写代码的时间。
作者 | Sharehub
链接 | blog.xiaohansong.com/idea-live-templates.html
投 稿 通 道
#
让你的博客被更多人看到
如果你在 CSDN、博客园、掘金等平台有写技术博客的习惯,想让自己的原创博客被更多人看到,可以来 Java后端 投稿。
???? 稿件基本要求:
• 文章确系个人原创作品,如果在其他非公众号渠道有过发表也可以,只要是个人原创即可。
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰、语句通顺。
• 如果被采纳的原创稿件,我们将提供稿费以及个人影响力曝光,具体依据文章阅读量和质量结算稿费。
???? 投稿通道:
• 投稿请联系下方微信,备注:原创投稿
△长按添加 Java后端 小编
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
相关文章
暂无评论...