乐趣区

关于idea:IDEA注释模板惊艳了动作要快姿势要帅

一、类正文

关上 IDEA 的 Settings,点击 Editor-->File and Code Templates,点击左边 File 选项卡上面的Class,在其中增加图中红框内的内容:

/** * @author jitwxs * @date ${YEAR}年 ${MONTH}月 ${DAY}日 ${TIME} */

注 意

在我提供的示例模板中,阐明了作者和工夫,IDEA 反对的所有的模板参数在下方的 Description 中被列出来。

保留后,当你创立一个新的类的时候就会主动增加类正文。如果你想对接口也失效,同时配置上图中的Interface 项即可。

二、办法正文

不同于目前网络上相互复制粘贴的办法正文教程,本文将实现以下性能:

  • 依据形参数目主动生成 @param 注解
  • 依据办法是否有返回值智能生成 @Return 注解

相较于类模板,为办法增加正文模板就较为简单,首先在 Settings 中点击 Editor-->Live Templates

点击最左边的 +,首先抉择 2. Template Group... 来创立一个模板分组:

在弹出的对话框中填写分组名,我这里叫做 userDefine:

而后选中刚刚创立的模板分组 userDefine,而后点击 +,抉择 1. Live Template

此时就会创立了一个空的模板,咱们批改该模板的 AbbreviationDescriptionTemplate text。须要留神的是,Abbreviation 必须为 *,最初查看下 Expand with 的值是否为 Enter 键。

上图中· Template text 内容如下,请间接复制进去,须要留神首行没有 /,且 \* 是顶格的

* *  * @author jitwxs * @date $date$ $time$$param$ $return$ */

留神到右下角的 No applicable contexts yet 了吗,这阐明此时这个模板还没有指定利用的语言:

点击 Define,在弹框中勾选Java,示意将该模板利用于所有的 Java 类型文件。

设置 applicable contexts

还记得咱们配置 Template text 时外面蕴含了相似于 $date$ 这样的参数,此时 IDEA 还不意识这些参数是啥玩意,上面咱们对这些参数进行办法映射,让 IDEA 可能明确这些参数的含意。点击 Edit variables 按钮:

为每一个参数设置绝对应的 Expression

设置 Expression

须要留神的是,datetimeExpression 应用的是 IDEA 内置的函数,间接应用下拉框抉择就能够了,而 param 这个参数 IDEA 默认的实现很差,因而咱们须要手动实现,代码如下:

groovyScript("def result ='';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] !='')result+='* @param' + params[i] + ((i < params.size() - 1) ? '\\r\\n' : '')}; return result =='' ? null : '\\r\\n' + result", methodParameters())

另外 return 这个参数我也本人实现了下,代码如下:

groovyScript("return \"${_1}\"=='void'? null :'\\r\\n * @return '+ \"${_1}\"", methodReturnType())

注:你还留神到我并没有勾选了 Skip if defined 属性,它的意思是如果在生成正文时候如果这一项被定义了,那么鼠标光标就会间接跳过它。我并不需要这个性能,因而有被勾选该属性。

点击 OK 保留设置,功败垂成!

三、测验成绩

3.1 类正文

类正文只有在 新建类时才会主动生成,成果如下:

类正文

3.2 办法正文

将演示以下几种状况:

  1. 有形参
  2. 单个形参
  3. 多个形参
  4. 无返回值
  5. 有返回值

办法正文

四、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 时,无奈解决退格问题,起因同第三点。

退出移动版