一、课堂评论
打开IDEA的Settings,单击Editor--File and Code Templates,然后单击右侧的File选项卡下的Class,将图中红框内的内容添加到其中。
/*** @author jitwxs* @date ${YEAR}年${MONTH}月${DAY}日${TIME}*/
我提供的示例模板说明了作者和时间。 IDEA支持的所有模板参数都列在下面的说明中。
保存后,自觉的万宝路创建新类后,会自动添加类注释。 如果还想启用接口,请同时配置上图中的接口项。
二、方法评论不同于目前网络上互相复制粘贴的方法注释教程,本文将实现以下功能:
根据形状参数项目自动生成@param注释
根据方法是否有返回值智能地生成@Return注释
与类模板相比,向方法中添加注释模板更为复杂,因此首先在Settings中单击Editor--Live Templates。
单击最右边的,首先选择2. Template Group .以创建模板组。
在弹出的对话框中填写组名。 这里称为用户定义:
然后选择刚创建的模板组userDefine,单击,然后选择1. Live Template。
将创建空模板,并修改该模板的Abbreviation、Description和Template text。 需要注意的是,Abbreviation必须为*,最后检查扩展宽度的值是否为Enter键。
上图的Template text的内容如下,请直接复制。 http://www.Sina.com/http://www.Sina.com /
* * @ authorjitwxs * @您注意到date $ date $ time $ $ param $ $ return $ * /右下角的No applicable contexts yet了吗? 此时,表示此模板没有指定要应用的语言:
单击Define并在组合框中选中Java,以指示该模板将应用于所有Java类型文件。
如果设置了applicable contexts,请记住在设置Template text时包含类似$date$的参数。 此时,IDEA不知道这些参数是什么。 然后,对这些参数进行方法映射,以便IDEA理解这些参数的含义。 单击Edit variables按钮。
设置与每个参数对应的表达式。
设置Expression时必须注意的是,date和time expression使用内置于IDEA中的函数,因此可以直接在下拉框中选择,但参数param是IDEA的缺省参数代码如下。
goovyscript('defresult=' ' ); def params=' $ { _1}'.replace all (((((()|(\s )、() ) ) )、()、()、)、) i params.size (; I(if ) Params[I]!=' ' ) result=' * @ param ' params [ I ] ((iparams.size (-1 ) ) )。 rn':'}; 返回结果=='? null : '\r\n ' result ',methodParameters () )此外,还自己实现了名为return的参数。 代码如下。
groovy script (返回
"${_1}" == 'void' ? null : '\r\n * @return ' + "${_1}"", methodReturnType())注:你还注意到我并没有勾选了 Skip if defined 属性,它的意思是如果在生成注释时候如果这一项被定义了,那么鼠标光标就会直接跳过它。我并不需要这个功能,因此有被勾选该属性。
点击 OK 保存设置,大功告成!
三、检验成果 3.1 类注释类注释只有在新建类时才会自动生成,效果如下:
类注释 3.2 方法注释将演示以下几种情况:
无形参
单个形参
多个形参
无返回值
有返回值
方法注释 四、Q & A(1)为什么模板的 Abbreviation 一定要叫 * ?Expand with 要保证是 Enter 键?
答:因为 IDEA 模板的生成逻辑是 模板名 + 生成键,当生成键是 Enter 时,我们输入 * + Enter 就能够触发模板。
这也同时说明了为什么注释模板首行是一个 * 了,因为当我们先输入 /*,然后输入 * + Enter,触发模板,首行正好拼成了 /**,符合 Javadoc 的规范。
(2)注释模板中为什么有一行空的 *?
答:因为我习惯在这一行写方法说明,所以就预留了一行空的写,你也可以把它删掉。
(3)注释模板中 $time$$param$ 这两个明明不相干的东西为什么紧贴在一起?
答:首先网上提供的大部分 param 生成函数在无参情况下仍然会生成一行空的 @param,因此我对param 函数的代码进行修改,使得在无参情况下不生成 @param,但是这就要求 $param$ 要和别人处在同一行中,不然没法处理退格。
(4)为什么 return 参数不使用 methodReturnType(), 而要自己实现?
答:methodReturnType() 在无返回值的情况下会返回 void,这并没有什么意义,因此我对 methodReturnType() 返回值进行了处理,仅在有返回值时才生成。
(5)为什么 $return$ 不是单独一行?
答:因为当 methodReturnType() 返回 null 时,无法处理退格问题,原因同第三点。
作者:Jitwxs
链接:https://jitwxs.cn/4135e0a9.html
往期推荐
在 Spring Boot 中,如何干掉 if else
大文件上传服务器、支持超大文件HTTP断点续传实践总结
支付宝架构真牛逼
Navicat!这个IDEA的兄弟,真香!
字节二面:GET 请求能上传图片吗?我蒙了。。
在部队当程序员是什么体验?
Mybatis-Plus 官方神器发布!
Spring Boot 2.6 正式发布:循环依赖默认禁止。。