一、类正文
关上 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
:
此时就会创立了一个空的模板,咱们批改该模板的 Abbreviation
、Description
和 Template 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
须要留神的是,date
和 time
的 Expression
应用的是 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 办法正文
将演示以下几种状况:
- 有形参
- 单个形参
- 多个形参
- 无返回值
- 有返回值
办法正文
四、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 时,无奈解决退格问题,起因同第三点。