自定义配置IDEA中的Java注释模板

news2025/3/12 19:26:01

文章目录

  • 1.背景
  • 2.模板配置
    • 2.1.配置类模板
    • 2.2.配置方法模板
      • 2.2.1. 创建自定义模板分组
      • 2.2.2. 配置缩写、模板、触发键
      • 2.2.3. 变量配置
  • 3.总结

1.背景

由于在公司的编码规约中关于注释的规约,在IDEA中的默认模板无法适配,所以在每次新建接口、类、方法的时候都需要手动的修改注释。为了避免这个重复的工作就需要将IDEA中的注释模板修改一下,本篇参考了一些网络上的配置方法,这里总结一下。

2.模板配置

主要需要配置的是类模板与方法模板,下面会写一下配置的方法,以及使用上需要注意的问题。

2.1.配置类模板

在IDEA中找到如下的路径,配置文件模板:

File > Settings > Editor > File And Code Templates

首先是在,includes中找到File Header这个配置模板,如果没有的话就新建一个同名文件,然后再右侧的编辑区域写上@author@date
其中作者可以像我这样写死,也可以使用下面提示的${USER,但后面这种方式会默认使用操作系统的名字(如:Administrator)。
日期的配置可以参考右下角的Description中的变量模板,一般只需要配置$DATE,我这里由于习惯问题也加上了${TIME}
在这里插入图片描述


第二步是切换到Files中,找到Java相关的几个文件类型,在右侧的#parse那里加上刚刚修改的模板文件的文件名,但这里一般默认就是File Header.java,不需要修改,如果你创建了其他的模板,就可以考虑在这里修改一下引用。
在这里插入图片描述


配置完成之后创建一个新的类,效果如下(接口或者枚举也是一样的效果):
在这里插入图片描述

2.2.配置方法模板

接下来是方法模板,在不配置模板的时候使用IDEA的自定义模板是这样的:
在这里插入图片描述
现在同样的想给加上作者和日期,可以按如下的配置,首先还是找到配置路径:

File > Settings > Editor > Live Template

2.2.1. 创建自定义模板分组

先试用Template Group创建一个模板分组,写一个好听的名字,然后选中刚刚创建好的分组通过List Template创建一个模板。
在这里插入图片描述
在这里插入图片描述

2.2.2. 配置缩写、模板、触发键

在这里插入图片描述
缩写abbreviation的意思就是在IDEA的代码编辑页中使用这个缩写,再加上触发键就可以生成对应的模板代码,例如大家都用过的psvm+回车键,可以生成main方法。

在这里我们将缩写配置为**,因为我们在编写文档注释的时候,会在方法上先打出/**,这里的两个星号当做缩写就比较自然。

下面的模板配置没有第一个/,这是因为在触发键触发后,缩写中的**会被模板替代掉,但是/不会,如果模板中配置了/,生成后则会变成//**
另外,如果是常量直接写死即可,如果是变量则可以写成$xxx$的方式,变量值的配置会在下面的2.2.3 部分去讲。

**
 * 功能描述
 *
 * $param$
 * @return $retrun$
 * @author 挥之以墨
 * @date $date$ $time$
 */

然后是触发键,在右侧的Option中,选择Tab或保持Default(Tab)也行,这里之所以不选择使用Enter是因为使用/**给字段创建注释的时候不需要这一堆模板的信息,只需要一个简单的文档注释说明字段是什么含义。
如果使用了Enter那么原有的默认生成注释的方式就会被覆盖掉,给字段写注释时,也会自动生成上面配置的模板信息,然后再手动删掉,非常麻烦。
在这里插入图片描述


最后是使用范围,在Applicable下面点击change,选择Java > Comment即可。
在这里插入图片描述

2.2.3. 变量配置

我们在上面的模板中定义了4个变量,可以通过右侧的Edit Variables来编辑变量值:
在这里插入图片描述
在这里插入图片描述
其中,下面三个直接使用IDEA自带的表达式即可:

  • return:methodReturnType(),也可以不要这个表达式,保持为空
  • date:date()
  • time:time()

param参数是一个重点,我在IDEA中没有找到合适的表达式,其中最适合的一个表达式是methodParameters(),这个表达式会按照参数的名字生成一个数组,就像这样:
在这里插入图片描述
所以在这里使用了一个groovy脚本来生成对应的@param注释,我们可以将得到的[name, age]值拆解一下,然后在编辑变量里面的Default Value中填入:

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

接下来对上面的脚本做一下解释,下面是格式化后的脚本:

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

首先,methodParameters()函数会传入一个数组(字符串),${_1}就是表示这个数组的引用。

  • 第一步:"${_1}".length() == 2其实就是在判断是否传入了一个空数组[](即方法没有入参)。
  • 第二步:.replaceAllsplit(',')就是把这个字符串重新转换成数组结构
  • 第三步:i==0表示第一个参数,拼接起来就好,i>1时,需要换行并拼接一个*号。

最后看一下效果吧,在方法中输入/**并按tab键,生成方法注释:
在这里插入图片描述

3.总结

本篇讲解了如何配置类的注释模板和通过代码模板来配置方法注释模板,需要注意缩写、模板、触发键、变量的配置。
其中,变量可以使用IDEA中内置的表达式来匹配变量值,当默认的表达式不满足要求时,也可以使用groovy脚本来做一个自定义的函数表达式满足需求。后续如果想要配置其他自定义模板时,也可以参考这套配置方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1453818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息安全研究方向

信息安全研究方向 目前信息安全的研究包含密码学、网络安全、信息系统安全、信息内容安全、信息对抗等方向。 网络空间是所有信息系统的集合,网络安全的核心是信息安全。网络空间安全学科是研究信息的获取、存储、传输、处理等领域中信息安全保障问题的一门学科。 信息安全理…

数据分析 — Pandas 数据加载、存储和清洗

目录 一、文件读取1、常见文件读取函数2、read_csv()3、read_table()4、read_excel()5、read_json()6、read_html()7、大文件读取 二、数据保存1、csv2、excel3、json4、html5、MySQL1、连接数据库2、MySQL 存储到本地3、本地存储到 MySQL 三、数据清洗1、处理缺失值1、判断数据…

【C++初阶】第三站:类和对象(中) -- 日期计算器

目录 前言 日期类的声明.h 日期类的实现.cpp 获取某年某月的天数 全缺省的构造函数 拷贝构造函数 打印函数 日期 天数 日期 天数 日期 - 天数 日期 - 天数 前置 后置 前置 -- 后置-- 日期类中比较运算符的重载 <运算符重载 运算符重载 ! 运算符重载 …

【教3妹学编程-算法题】N 叉树的前序遍历

2哥 : 叮铃铃&#xff0c;3妹&#xff0c;准备复工了啊&#xff0c;过年干嘛呢&#xff0c;是不是逛吃逛吃&#xff0c;有没有长胖呢。 3妹&#xff1a;切&#xff0c;不想上班&#xff0c;假期能不能重来一遍啊&#xff0c;虽然在家我妈张罗着要给我相亲呢。可是在家还是很好的…

压敏电阻:浪涌保护的理想解决方案?

有关电涌保护的新法规迫使工程师寻找解决方案&#xff0c;以最小的成本损失集成此类保护&#xff0c;特别是在成本敏感的消费产品中。在汽车领域&#xff0c;电涌保护也越来越重要&#xff0c;这要归功于即使是最基本的量产车中电子含量的快速增长&#xff0c;以及公认的电源电…

MySQL简单配置GTID

前期规划 IP地址 角色 系统版本 内核 软件包名称 192.168.2.3 Mysql主服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc2.17-x86_64.tar.xz 192.168.2.4 Mysql从服务器 CentOS Stream 9 5.14.0- 381.el9.x86_64 mysql-8.2.0-linux-glibc…

C++ //练习 7.27 给你自己的Screen类添加move、set和display函数,通过执行下面的代码检验你的类是否正确。

C Primer&#xff08;第5版&#xff09; 练习 7.27 练习 7.27 给你自己的Screen类添加move、set和display函数&#xff0c;通过执行下面的代码检验你的类是否正确。 Screen myScreen(5, 5, X); myScreen.move(4, 0).set(#).display(cout); cout<<"\n"; myScr…

计算机网络——18无连接传输UDP

无连接传输UDP UDP “尽力而为的”服务&#xff0c;报文段可能 丢失送到应用进程的报文段乱序 无连接 UDP发送端和接收端之间没有握手每个UDP报文段都被独立的处理 UDP被用于 流媒体DNSSNMP 在UDP上实现可靠传输 在应用层增加可靠性应用特定的差错格式 UDP&#xff1a;用户…

综合交易模型教程---qmt实盘链接,提供源代码

综合交易模型教程---qmt实盘链接&#xff0c;提供源代码 Original L1511732 数据分析与运用 2024-02-17 00:13 贵州 目前框架实盘全部完成了&#xff0c;后面写教程&#xff0c;每一个函数怎么样使用&#xff0c;怎么样开发自己的策略 模拟盘现在登录不了我直接实盘展示 后面…

阿里云轻量应用服务器怎么样?有哪些好处?

阿里云轻量应用服务器有哪些优势&#xff1f;轻量服务器具有价格优惠、使用门槛低快速上手、灵活变配、可视化运维等优势&#xff0c;阿里云百科aliyunbaike.com整理轻量应用服务器详细优势&#xff1a; 1、价格优惠 阿里云轻量应用服务器性价比高&#xff0c;价格优惠&#x…

ubuntu制作windows的u盘启动盘

概要&#xff1a; 本篇演示在ubuntu22.04中制作windows10的u盘启动盘 一、下载woeusb 1、下载woeusb 在浏览器中输入https://github.com/woeusb/woeusb/releases访问woeusb 点击红色矩形圈出来的部分&#xff0c;下载woeusb 2、安装wimtools wimtools是woeusb的一个必须的…

EasyRecovery软件免费版与付费版有哪些功能区别?

免费版的EasyRecovery软件在功能和恢复能力上确实存在一些限制。 首先&#xff0c;在数据恢复方面&#xff0c;免费版通常只能恢复最多1GB的数据。这意味着&#xff0c;如果你需要恢复的数据量超过1GB&#xff0c;你将需要升级到付费版才能完全恢复。 其次&#xff0c;免费版…

第4讲引入JWT前后端交互

引入JWT前后端交互 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519)&#xff1b; JWT就是一段字符串&#xff0c;用来进行用户身份认证的凭证&#xff0c;该字符串分成三段【头部、载荷、签证】 后端接口测试&…

c++ 可调用对象的绑定器和包装器

文章目录 可调用对象普通函数类的静态成员函数仿函数lambda函数类的非静态成员函数 最重要的可被转换为函数指针的类对象 包装器 function适配器bind可变函数和参数实现回调函数实现替代虚函数 可调用对象 在C中&#xff0c;可以像函数一样调用的有: 普通函数、类的静态成员函…

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA&#xff0c;结果发现项目结构显示有问题&#xff1a; 二、解决办法 File -> Project Structure… -> Project Settings (选Modules)&#xff0c;然后导入Module 结果&#xff1a; 补充&#xff1a; IDEA提示“The imported module settings a…

深度学习系列58:大模型训练和压缩

1. 大模型训练 1.1数据并行 1.2 模型并行 1.3 ZeRO 1.4 流水线并行 1.5 混合精度训练 1.6 offloading 把梯度放在cpu上保存和计算 1.7 overlapping 提前传输数据 1.8 checkpointing 中间线性层不保存&#xff0c;反向传播时再次重新计算 1.9 使用BMtrain 2. 大模型压…

AutoSAR(基础入门篇)10.3-BswM配置

目录 一、ECU State Handing(ESH) 二、Module Initialization 三、Communication Control 说起BswM的配置,其实博主问过很多朋友了,大家基本都只用自动配置;很少有用到手动配置的时候,对于刚刚入门的大家来说,掌握自动配置基 本也就足够了。 一、ECU State Handing(ESH…

Vue首屏优化,12个提速建议

文章目录 代码拆分和懒加载&#xff1a;代码拆分懒加载 图片优化&#xff1a;组件懒渲染&#xff1a;数据预获取和缓存&#xff1a;服务器端渲染&#xff08;SSR&#xff09;&#xff1a;代码压缩和合并&#xff1a;使用 CDN 加速&#xff1a;监控和性能分析&#xff1a;代码优…

LeetCode Python - 22.括号生成

目录 题目答案运行结果 题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例…

中国半导体设备行业概述

TrendForce根据各种行业数据和主要代表性公司的最新财务报告综合分析指出&#xff0c;中国本土设备产业在半导体制造流程&#xff08;除光刻机外&#xff09;的各个阶段均有覆盖能力。具体来说&#xff0c;国产设备在中国本地市场中&#xff0c;在剥离、清洗及蚀刻等工艺上的本…