IntelliJ IDEA设置方法注释模板并解决入参和返回值为空问题

## 简介
网上讲解设置方法注释模板的文章很多,尝试了很多方法后,发现在方法体外生成的模板入参值和返回值都是null,而放到方法体内的入参值和返回值就可以自动生成。苦试N次,终于发现诀窍。Idea的这个设置真的不太人性化,建议完善。此设置浪费了自己很多时间,固分享于此,望助你解决问题。本方法适用于IntelliJ IDEA 2019.3 x64及之后版本(截止到发稿日期最新版:2020.03版)应该都可以使用。

一.打开实时模板,新建模板组

  1. 依次点击:【File】-->【settings】-->【Editor】-->【Live Templates】,点击右上角的+号后, 选择Template Group
  2. 在弹出框中,随意输入个英文名:Method Comment(名字随便起),点击ok

在这里插入图片描述

二.创建实时模板

  1. 必须单击选中上一步骤中创建的模板组Method Comment,然后再次点击右上角的+号,选择live Template

  2. Abbreviation文本框输入x

在这里插入图片描述

此处定义的是创建日志的快捷键,在方法上面一行,输入/x+ 回车,会自动生成注释模板,可以根据自己的喜好定制快捷键。
之所以设置成x,而没有使用*,是因为这样可以兼容IDEA自带的块注释。我们要使用块注释或系统自带的方法注释时,还是跟以前一样输入/*+ 回车或者/**+ 回车,你会发现原来的注释模板依然能有自动生成,并没有被我们自定义的替换掉。这样就无缝兼容系统模板了。当然,如果你不在需要系统模板,也是可以用*作为快捷键,直接替换掉系统自带的方法注释或块注释。

** 如果设置成其他字母会出现什么后果? **
如果编码时,有一个对象中有一个属性是以你设置的字母开头的,当我们输入对象,再输入.时(如过设置为’s’,你在用set方法时,输入:user.s),idea提示下拉框中第一项,就会出现我们自定义的方法模板提示,为了降低这种现象,我们使用x,因为英语字母中以x开头的单词较少,出现这种情况的几率就比较低。我们不设置成*,也有一部分原因是,输入*,要按shift+8,这本身就不快捷。所以经过我尝试后,最推荐的是x键。你可能会想到,用数字键1,不是更好吗?英语单词和对象属性都没有数字开头的,不就避免了这个问题吗?这个我也想到并试验过了,确实没有属性是以数字开头,但是当你属性以数字结尾的时候,按回车,会自动生成方法注释。所以数字当快捷键也不太舒服。

  1. Description中随意输入个描述即可,对配置无任何影响。
  2. Template Text文本框中输入以下模板(关键步骤,十分重要)。
**
 * $discription$
 $params$
 $return$
 * @Author: 大脑补丁on $date$ $time$
 */

模板首行开头是没有/,为何这样定义模板?
这样定义模板,是因为我们要通过/和上文 Abbreviation设置的快捷键,组合在一起使用,作为触发模板的快捷键。只有当输入了/后,再输入我们自定义的 Abbreviation中的快捷键x,才能触发注释我们自定义的注释。这样在写代码时,输入x的时候,弹出的候选项中是不会有注释模板的,不会干扰我们正常写代码。如下图,我们输入x,提示框不会包含注释模板。这样的好处是,自定义注释模板不会侵入正常编码(不需要写注释的时候,不会在弹框中提示)。
在这里插入图片描述

其次,这样定义模板,能解决入参和返回值为空问题,如果在模板首行开头加入/,则生成的模板中,将可能获取不到入参值和返回值,可能会显示为null。

  1. 点击底部的DefineChange按钮,在弹出的复选框列表中,勾选Java或者只勾选Java下的 other

在这里插入图片描述

只勾选other的效果,在写java代码时,在声明方法时候,输入/x+ 回车(上文设置的快捷键),可以弹出注释模板,在其他位置不弹出,比如在方法体内、在类名上输入/x+ 回车,都不会生成模板。如果全选java,在Java代码的任意位置输入/x+ 回车,都可以生成模板。我们生成方法注释的使用场景,当然是当鼠标在方法体上面一行闪烁的时候,才会使用;鼠标在其他位置闪烁时,我们是不需要添加方法注释的,所以建议只勾选other,来控制这一效果。

  1. Expand with 下拉框中,选择Enter
    输入完快捷键/x后,再按回车键Enter,即可自动生成注释模板。而系统默认是Tab键。经测试后发现,不设置此选项,按回车Enter也生效。

三.编辑变量

  1. 点击右侧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());
  1. 点击ok,关闭编辑变量窗口。再点击Applyok关闭设置窗口,至此配置完成。

四.如何使用

在java代码中的方法体上一行单击后,输入/x会弹出提示框,第一个选项x就是我们自定义的方法注释模板,再按回车键Enter,就可以自动生成代码模板了。
在这里插入图片描述

生成的模板效果如下,返回值和参数都能成功获取到:
在这里插入图片描述

五. 总结

IDEA的模板定制功能很强大,但里面有很多隐藏的细节,相信本文已经讲透了,尤其是在设置模板的时候,为什么设置快捷键为字母‘x’,而不用*,为什么生成的模板中入参和返回值为null以及如何避免都在这写清楚了。而且IDEA一直在升级迭代,老版本和新版本可能会不同,本文是基于IntelliJ IDEA 2019.3 x64版本实现的,所以看网上五花八门的教程时候,一定要注意比对版本,希望对你有帮助,觉得有用别忘了收藏点赞。

  • 23
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值