一、类注释
在IDEA中打开File-Settings
,在Settings
中打开Editor-File and Code Templates
,在左边的Files
中选中Class
。
如上图,
Class
编辑框中,编写如下代码:
/**
* @Author: ${user}
* @createTime: ${YEAR}年${MONTH}月${DAY}日 ${HOUR}:${MINUTE}:${SECOND}
* @version: ${version}
* @Description: ${description}
*/
上述代码生成效果如下:
/**
* @Author:
* @createTime: 2022年04月05日 23:56:34
* @version: 1.0
* @Description:
*/
- @Author: 作者,可以直接写上。也可以配置
${user}
,在创建类时会提示添加。- @Description: 类描述,可以直接写上。也可以配置
${description}
,在创建类时会提示添加。- @version: 版本,可以直接写上。也可以配置
${version}
,在创建类时会提示添加。- @createTime:创建日期,可以如上写法自定义格式。
配置完成后,勾选Enable Live Templates
。
二、方法注释
在Settings
中打开Editor-Live Templates
,如下图:
1 创建分组 Template Group
点击 " + " 号,选择Template Group
,接着在弹出框中设置好这个组的名字,点击确定,例如:myMethodTemplates
。
2 在分组里创建一个 Live Template 模版
选中上面我们刚刚创建的分组myMethodTemplates
,然后点击 " + " 号,选择Live Template
。
3 配置 Live Template 模版
接下来就是创建注释模版了。
**
* @author: $user$
* @createTime: $date$ $time$
* @description: $description$
$param$
$return$
*/
上面配置的效果如下:
/**
* @author:
* @createTime: 2022年04月06 12:00:00
* @description:
* @param: name - [java.lang.String]
* @param: age - [int]
* @return: java.lang.String
*/
public String test(String name ,int age){return "";}
3.1 配置Abbreviation
Description
上图中Abbreviation
设置项 ,是在我们要生成注释时,选择自己的某一个Live Template
模版的快捷提示。
什么意思呢?
/x...
public void test(){}
如上,/
意思是我们要加注释,开头为啥是/
后面再说。x
就是Abbreviation
中设置的缩写。我们在Template Group
中可能还有其他的模版,例如:a
、b
等,我们可以根据这个来选择使用不同的模版注释。设置这个缩写也会弹窗提示,就像代码提示那样。
重要提示:不要把
Abbreviation
设置成斜杠,因为这会导致注释无法获取方法参数。
设置成其他的字母或是符号都可以,这个看个人喜好,最好不要设置成 *
(星号),以防我们不需要模版时误导入。
Description
是对模版的说明,或是说对这个Abbreviation
缩写的说明,防止我们写代码时和要写的代码提示冲突。
3.2 配置Template text
这个就是配置生成的注释的格式:
**
* @author: $user$
* @createTime: $date$ $time$
* @description: $description$
$param$
$return$
*/
如上,开头不要有/
,因为会造成方法参数无法获取,我们在方法上面生成注释时,需要先写斜杠,然后再输入Abbreviation
设置的模版缩写,这时 IDEA 会提示这个模版。
下面我们对模版进行说明:
例:@author: $user$
@author:这个是我们需要配置的项
$user$ :这个可以自己写,也可以使用双$符来标记变量,使用双$符时,在我们配置 Edit variables 时,里面会显示 user 项。
例:$param$
$param$:这个前面没有星号,是因为我们在后续配置 Edit variables 时,表达式里面已经加上了,所以此处不加。
对于模版的格式中的各个项,我们可以根据自己需求去添加。
3.3 配置Edit variables
我们点击Edit variables
后会弹出Edit variables
变量配置框。
Name:
是Template text
中的变量名,就是双$符中间的变量。
Expression:
是变量如何获取的表达式。
Default value:
是设置变量的默认值。
Skip if defined:
这一项需要勾选上。
接下来开始讲比较重要的Expression
表达式。IDEA内置了一些表达式,可以点击Expression
项后面的箭头查看。我们可以选择IDEA提供的内置表达式,也可以自己写groovyScript
来达到自己想要的效果,写完之后复制粘贴进Expression
中即可,后面会讲解如何写groovyScript
。
接下来讲解几个常用的:
user()
会自动获取系统名。date("yyyy年MM月dd")
date()获取年月日的信息,通过传入格式化方式的字符串来自定义日期格式。time("HH:mm:ss")
同date()函数。param
return
这两个需要写groovyScript
表达式,在下面再讲。
groovyScript表达式:
格式:groovyScript("[逻辑判断代码]",[获取参数表达式(此处为IDEA内置)])
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())
IDEA变量表达式使用了
groovyScript
,上述代码是根据IDEA内置methodParameters()
函数获取的值重新处理的成想要的格式。
methodParameters()
函数获取的值格式为:[name, age]
。
上述代码中:
${_1}
获取方法参数。${_1}
也就是上述代码末尾的methodParameters()
,如果获取参数表达式有两个,可以通过${_2}
获取第二个的结果。- 然后通过
for
循环将多个参数分行,形成多个@param
。三目运算就是判断是否还有参数,如果有就分行。
@param设置
下面提供几种方法参数的格式:
- 不带参数类型,例如:
@param: name
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())
- 带参数类型,全类名,例如:
@param: name - [java.lang.String]
groovyScript(
"def result='';
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
def paramTypes=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
if(params[i].size() > 0){
result += '* @param: ' + params[i] + ' - [' + paramTypes[i] + ']' + ((i < params.size() - 1) ? '\\n ' : '')
}else{
result += '* @param: ' + params[i] + ' ' + paramTypes[i] + ((i < params.size() - 1) ? '\\n ' : '')
}
};
return result;"
, methodParameters(), methodParameterTypes())
- 带参数类型,仅类名,例如:
@param: name - [String]
groovyScript(
"def result='';
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
def paramTypes=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
def types = paramTypes[i].split('\\\\.').toList();
if(params[i].size() > 0){
result += '* @param: ' + params[i] + ' - [' + types[types.size()-1] + ']' + ((i < params.size() - 1) ? '\\n ' : '')
}else{
result += '* @param: ' + params[i] + ' ' + types[types.size()-1] + ((i < params.size() - 1) ? '\\n ' : '')
}
};
return result;"
, methodParameters(), methodParameterTypes())
也可以根据自己的格式需求,在groovyScript
自行更改。
@return配置
groovyScript("def returnType = \"${_1}\"; def result = '* @return: ' + returnType; return result;", methodReturnType());
关于date
相关的,我们可以用IDEA内置的表达式,然后传入自己的格式化规则字符串即可。例如:date("yyyy年MM月dd") time("HH:mm:ss")
。
3.4 配置 Options
Options
中的Expand with
是快捷键的配置,默认是Tap
键。
3.5 配置模版应用范围
图中红色方框处就是配置应用范围的地方,在为配置前为
Define
,在配置后为 Change
。点击既可以配置。
可以选择
Everwhere
在每一个地方都应用,也可以选择对应的哪一种语言或什么位置会出现Abbreviation
缩写弹窗提示。
写在最后:
- 如果文章中有错误或是表达不准确的地方,欢迎大家评论中指正,以便我完善。
- 我也会根据所学到新的知识不断对文章进行更新。