## 简介
网上讲解设置方法注释模板的文章很多,尝试了很多方法后,发现在方法体外生成的模板入参值和返回值都是null
,而放到方法体内的入参值和返回值就可以自动生成。苦试N次,终于发现诀窍。Idea的这个设置真的不太人性化,建议完善。此设置浪费了自己很多时间,固分享于此,望助你解决问题。本方法适用于IntelliJ IDEA 2019.3 x64
及之后版本(截止到发稿日期最新版:2020.03
版)应该都可以使用。
一.打开实时模板,新建模板组
- 依次点击:
【File】-->【settings】-->【Editor】-->【Live Templates】
,点击右上角的+
号后, 选择Template Group
。 - 在弹出框中,随意输入个英文名:
Method Comment
(名字随便起),点击ok
。
二.创建实时模板
- 必须单击选中上一步骤中创建的模板组
Method Comment
,然后再次点击右上角的+
号,选择live Template
。 Abbreviation
文本框输入x
。
此处定义的是创建日志的快捷键,在方法上面一行,输入/x+ 回车
,会自动生成注释模板,可以根据自己的喜好定制快捷键。
之所以设置成x
,而没有使用*
,是因为这样可以兼容IDEA自带的块注释。我们要使用块注释或系统自带的方法注释时,还是跟以前一样输入/*+ 回车
或者/**+ 回车
,你会发现原来的注释模板依然能有自动生成,并没有被我们自定义的替换掉。这样就无缝兼容系统模板了。当然,如果你不在需要系统模板,也是可以用*
作为快捷键,直接替换掉系统自带的方法注释或块注释。
** 如果设置成其他字母会出现什么后果? **
如果编码时,有一个对象中有一个属性是以你设置的字母开头的,当我们输入对象,再输入.
时(如过设置为’s’,你在用set方法时,输入:user.s
),idea提示下拉框中第一项,就会出现我们自定义的方法模板提示,为了降低这种现象,我们使用x
,因为英语字母中以x
开头的单词较少,出现这种情况的几率就比较低。我们不设置成*
,也有一部分原因是,输入*
,要按shift+8
,这本身就不快捷。所以经过我尝试后,最推荐的是x
键。你可能会想到,用数字键1
,不是更好吗?英语单词和对象属性都没有数字开头的,不就避免了这个问题吗?这个我也想到并试验过了,确实没有属性是以数字开头,但是当你属性以数字结尾的时候,按回车,会自动生成方法注释。所以数字当快捷键也不太舒服。
-
Description
中随意输入个描述即可,对配置无任何影响。 -
Template Text
文本框中输入以下模板(关键步骤,十分重要
)。
**
* $discription$
$params$
$return$
* @Author: 大脑补丁on $date$ $time$
*/
模板首行开头是没有/
,为何这样定义模板?
这样定义模板,是因为我们要通过/
和上文 Abbreviation
设置的快捷键,组合在一起使用,作为触发模板的快捷键。只有当输入了/
后,再输入我们自定义的 Abbreviation
中的快捷键x
,才能触发注释我们自定义的注释。这样在写代码时,输入x
的时候,弹出的候选项中是不会有注释模板的,不会干扰我们正常写代码。如下图,我们输入x
,提示框不会包含注释模板。这样的好处是,自定义注释模板不会侵入正常编码(不需要写注释的时候,不会在弹框中提示)。
其次,这样定义模板,能解决入参和返回值为空问题,如果在模板首行开头加入/
,则生成的模板中,将可能获取不到入参值和返回值,可能会显示为null。
- 点击底部的
Define
或Change
按钮,在弹出的复选框列表中,勾选Java
或者只勾选Java
下的other
只勾选other
的效果,在写java代码时,在声明方法时候,输入/x+ 回车
(上文设置的快捷键),可以弹出注释模板,在其他位置不弹出,比如在方法体内、在类名上输入/x+ 回车
,都不会生成模板。如果全选java
,在Java代码的任意位置输入/x+ 回车
,都可以生成模板。我们生成方法注释的使用场景,当然是当鼠标在方法体上面一行闪烁的时候,才会使用;鼠标在其他位置闪烁时,我们是不需要添加方法注释的,所以建议只勾选other
,来控制这一效果。
-
Expand with
下拉框中,选择Enter
。
输入完快捷键/x
后,再按回车键Enter
,即可自动生成注释模板。而系统默认是Tab
键。经测试后发现,不设置此选项,按回车Enter
也生效。
三.编辑变量
- 点击右侧
Edit variables
,参考下图,输入下列参数即可。注: 弹出框中的参数,是由上文中Template Text
中的参数控制,你可以在模板代码中调整参数。
Default value
栏目中所需要的脚本:
①params
脚本:
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+='* @param ' + params[i] + ((i < params.size() - 1) ? '\\n ' : '')}; return result", methodParameters())
②return
脚本:
groovyScript("def returnType = \"${_1}\"; def result = '* @return ' + returnType; return result;", methodReturnType());
- 点击
ok
,关闭编辑变量窗口。再点击Apply
和ok
关闭设置窗口,至此配置完成。
四.如何使用
在java代码中的方法体上一行单击后,输入/x
会弹出提示框,第一个选项x
就是我们自定义的方法注释模板,再按回车键Enter
,就可以自动生成代码模板了。
生成的模板效果如下,返回值和参数都能成功获取到:
五. 总结
IDEA的模板定制功能很强大,但里面有很多隐藏的细节,相信本文已经讲透了,尤其是在设置模板的时候,为什么设置快捷键为字母‘x’,而不用*
,为什么生成的模板中入参和返回值为null以及如何避免都在这写清楚了。而且IDEA一直在升级迭代,老版本和新版本可能会不同,本文是基于IntelliJ IDEA 2019.3 x64
版本实现的,所以看网上五花八门的教程时候,一定要注意比对版本,希望对你有帮助,觉得有用别忘了收藏点赞。