IDEA:自动生成方法注释并添加 @param 参数(Java+Kotlin)

724 阅读1分钟

在用 JavaKotlin 编写方法时建议编写完善的注释,包含每个参数的意义和返回的内容,下面介绍在 IDEA 中自动生成方法注释的技巧。
特别是我平时使用 Kotlin 比较多,而 Kotlin 的注释生成和 Java 有点不同,请往下看。

一、需求描述

默认 Java 方法输入 /** 回车会自动生成方法注释,并添加方法参数。
但我们可能想在注释中添加作者和日期,就得用到 IDEA 的实时模板功能了(代码片段)。

Java 生成的默认注释:

/**
 * 
 * @param username
 * @param password
 * @return
 */
public String index(String username, Integer password) {
    return "xinggang";
}

我们期望生成这样的注释:

/**
 * 
 * @param username
 * @param password
 * @return java.lang.String
 * @author xinggang
 * @create 2022/02/24
 **/
public String index(String username, Integer password) {
    return "xinggang";
}

二、解决方案

打开 IDEA 设置:文件 | 设置 | 编辑器 | 实时模板,增加一个模板,设置如下,注意标记的 4 处。

20220224_090246.png

1、缩写用 *

2、模板文本(注意开始是个 *,不是 /*

*
 * $name$
 * $param$
 * @return $return$
 * @author xinggang
 * @create $date$
 **/

3、作用于 JavaKotlin(Kotlin 获取不到方法参数,解决方案见本文后面章节)

4、展开方式 Enter(当然也可以选择自己喜欢的如 Tab

5、编辑变量

20220224_090436.png

其中 param 变量表达式:

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

6、使用:输入 /** 后回车,生成注释如下,光标会定位在开始位置方便输入方法的名称及描述等。

/**
 * |
 * @param username
 * @param password
 * @return java.lang.String
 * @author xinggang
 * @create 2022/02/24
 **/
public String index(String username, Integer password) {
    return "xinggang";
}

三、Kotlin 获取不到参数

1、若不使用上面的模板,Kotlin 默认输入 /**不会自动生成带参数的注释,这是因为 IDEA 默认没有安装 kdoc-generator 插件。
2、即使使用上面的模板,Kotlin 方法上也无法获取方法参数

本文模板输出的内容(获取不到参数)

/**
 * 
 * @param null
 * @return 
 * @author xinggang
 * @create 2022/02/24
 **/
fun saveData(billNO: String, pcqy: String, currUser: SysUser): Any {
     。。。   
}

适用于 Kotlin 的变通解决方案:

我思前想后终于找到一个不算完美但用起来倒也舒爽的变通方案。

1、安装 kdoc 插件

安装 kdoc-generator 插件后即可自动生成带参数的方法注释。

20220224_090436.png

kdoc 生成的注释如下:

/**
 * TODO
 *
 * @param billNO
 * @param pcqy
 * @param currUser
 * @return
 */
fun saveData(billNO: String, pcqy: String, currUser: SysUser): Any {
    。。。    
}

2、修改上面的模板

将之前定义的 * 模板适用范围去掉 kotlin,即 kotlin 中不再使用上面定义的模板,如果一开始就没有勾选 kotlin 则忽略此步。

3、新增加模板 TODO

方法不再赘述,和之前的一样,直接看图。

20220224_093029.png

模板文本:

$name$$END$
* @author xinggang
* @create $date$

4、使用

这样就 OK 了,使用时先按 /** 回车输入 kdoc 的默认注释,这时光标停留在 TODO 位置,这时再直接按 Tab 就调用 TODO 模板补全内容了。

效果动图:

20220224_92647.gif

完🏝️。

本文转自 blog.csdn.net/ifu25/artic…,如有侵权,请联系删除。