## 简介
网上讲解设置方法注释模板的文章很多,尝试了很多方法后,发现在方法体外生成的模板入参值和返回值都是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版本实现的,所以看网上五花八门的教程时候,一定要注意比对版本,希望对你有帮助,觉得有用别忘了收藏点赞。

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

  1. 简单的说说idea方法注释模板获取不到参数和返回值类型的问题

    我们以前使用Eclipse的时候,习惯性使用 /** 作为方法的快捷注释,网上有的方法获取不到参数和返回值类型,我也是找了很久,希望能帮到需要的人吧. 第一步:找到创建模板的地方(Ctrl+Shift ...

  2. Eclipse配置代码注释模板 Eclipse代码注释模板 Eclipse设置方法注释模板

    Eclipse配置代码注释模板 Eclipse代码注释模板 Eclipse设置方法注释模板 一.前言 1.在日常的团队开发中,都会有相应的的代码开发规范模板:在不同的IDE中配置方式又是不一样的,本文 ...

  3. Spring Boot AOP处理方法的入参和返回值

    前言 IOC和AOP是Spring 中最重要的两个模块.这里练习一下如何使用Spring Boot AOP处理方法的入参和返回值. Spring AOP的简单介绍: AOP(Aspect-Orient ...

  4. 根据WebService地址展示方法列表、入参和返回值(解析wsdl)

    项目源码:https://gitee.com/xuchuruo/parsing_wsdl(有些jar包Maven上无法下载) ------------------------------------- ...

  5. 重写Math 中sin cos asin  acos 方法,将其入参或者返回值 从弧度改为角度

    Math 中sin cos 方法的入参 单位是弧度,而我们在数学公式中填写的都是角度: Math 中asin  acos 方法的返回值 单位是弧度,而我们在数学公式中arcsin  arccos返回值 ...

  6. aop 获取方法入参出参_Spring AOP获取请求URL的入参及返回值(通用方法)

    以下代码为通用的代码,其中json解析使用的是fastJson,可以记录用户访问的ip.url.入参和出参 /** * @author jasonLu * @date 2017/10/26 9:57 ...

  7. GoLand ide编辑器设置方法注释模板(例如author,date)

    设置后的使用: 设置完了,输入自定义的快捷键回车即可出现自定义的模板内容. 效果: 设置步骤: File|Settings|Editor|Live Templates| 注意: 不要修改为/** 或者 ...

  8. arthas使用示例:tt记录指定方法每次调用的入参和返回值

    参数说明 使用举例 字段说明 检索调用记录 查看调用信息 重做一次调用 总结

  9. IntelliJ IDEA类和方法注释模板配置

    1.设置文件注释 设置Java类的注释模板,创建Java类自动生成该注释模板. 先看文件注释效果: 1.1.选择 IntelliJ IDEA -> 选择 Preferences... 打开IDE ...

最新文章

  1. BottomNavigationView+ViewPager+Fragment仿微信底部导航栏
  2. Zookeeper集群的搭建及遇到的问题
  3. OpenGL Gouraud着色法的实例
  4. mysql5.0 php_php怎么连接mysql5.0?
  5. com.microsoft.sqlserver.jdbc.SQLServerException: 索引 7 超出范围。
  6. 双非高校硕士一作发学校首篇Nature后,选择离开科研当公务员,本人及导师回应...
  7. 斗地主AI算法——第十四章の主动出牌(3)
  8. 逻辑回归(LR)个人学习总结篇
  9. 百度宣布AI同传最新突破!能预测,低延时,演示效果惊人,外媒称媲美人类翻译...
  10. PKMS的queryIntentActivities分析
  11. 欧拉函数---预处理打表
  12. centos离线安装docker-ce 18.03.0-ce
  13. 用过凡科建站的出来说一下可靠吗,免费版的怎样
  14. 流?I/O操作?阻塞?epoll?
  15. 针对开放平台的架构理解
  16. N的阶乘递归与非递归
  17. 2019清华计算机考研,2019清华计算机考研总分是多少
  18. 电脑远程控制,自动重启,断电重启,网络自动连接
  19. python tk文本框_python图形界面tk 1.5 文本框(Text box | Entry)
  20. 记录 ESIM 安装、使用过程中遇到的问题

热门文章

  1. (翻译)角色扮演模式(Role playing)
  2. 计算机组成原理大题速成,计算机组成原理大题
  3. FastqC结果简介
  4. 听说CDN高防和高防IP是服务器安全的“翘楚”,那么你知道这二者的区别吗?
  5. gfs和hdfs文件系统的区别
  6. 【CSS】背景样式(颜色、图片、平铺、附着和位置)
  7. AdSense 使用教程: 通过让 Google 在您的网站上投放广告,帮助您从中获利
  8. 数据结构之2-3 树
  9. java+http文件夹上传
  10. Web安全之攻击验证机制