【java21】java21新特性之JavaDoc中支持代码片段

news2024/9/24 17:41:33

在Java18之前,已经支持在JavaDoc中引入代码片段,这样可以在某些场景下更好的展示描述信息,但是之前的支持功能有限,比如我想高亮代码片段中的某一段代码是无能为力的。现在Java18优化了这个问题,增加了@snippet来引入更高级的代码片段。

Java18之前@code的使用

在Java18之前,使用<pre>{@code ...}</pre>来引入代码片段。

package com.morris.java21;

/**
 * Java17中JavaDoc使用代码片段
 */
public class Java17DocDemo {

    /**
     * calc the sum of a and b.
     *
     * 代码如下:
     * <pre>{@code
     *     public int add(int a, int b) {
     *         return a + b;
     *     }
     * }</pre>
     *
     * @param a a
     * @param b b
     * @return sum of a and b
     */
    public int add(int a, int b) {
        return a + b;
    }
}

生成JavaDoc:

>C:\Program\jdk\jdk-17.0.11\bin\javadoc.exe -d src\main\resources\java17-doc -encoding utf-8 src\main\java\com\morris\java21\Java17DocDemo.java
正在加载源文件src\main\java\com\morris\java21\Java17DocDemo.java...
正在构造 Javadoc 信息...
正在构建所有程序包和类的索引...
标准 Doclet 版本 17.0.11+7-LTS-207
正在构建所有程序包和类的树...
正在生成src\main\resources\java17-doc\com\morris\java21\Java17DocDemo.html...
正在生成src\main\resources\java17-doc\com\morris\java21\package-summary.html...
正在生成src\main\resources\java17-doc\com\morris\java21\package-tree.html...
正在生成src\main\resources\java17-doc\overview-tree.html...
正在构建所有类的索引...
正在生成src\main\resources\java17-doc\allclasses-index.html...
正在生成src\main\resources\java17-doc\allpackages-index.html...
正在生成src\main\resources\java17-doc\index-all.html...
正在生成src\main\resources\java17-doc\index.html...
正在生成src\main\resources\java17-doc\help-doc.html...

效果如下:

Java18中@snippet的使用

从Java18开始,可以使用@snippet来生成注释,且可以高亮某个代码片段。

/**
 * 高亮显示代码片段
 * {@snippet :
 *     public void hello() {
 *         System.out.println("Hello World!"); // @highlight substring="println"
 *     }
 * }
 *
 */
public void hello() {
    System.out.println("Hello World!");
}

效果如下:

高亮显示代码片段

可以在注释中使用@highlight来指定高亮某些字段。

/**
 * 高亮显示代码片段
 * {@snippet :
 *     public void hello() {
 *         System.out.println("Hello World!"); // @highlight substring="println"
 *     }
 * }
 *
 */
public void hello() {
    System.out.println("Hello World!");
}

效果如下:

正则高亮显示代码片段

甚至可以使用正则来高亮某一段中的某些关键词:

/**
 * 正则高亮显示代码片段
 * {@snippet :
 *     for (var arg : args) { // @highlight region regex = "\barg\b"
 *         if (!arg.isBlank()) {
 *             System.out.println(arg);
 *         }
 *     }// @end
 * }
 *
 * @param args 打印数组
 */
public void print(String[] args) {
    for (var arg : args) {
       if (!arg.isBlank()) {
             System.out.println(arg);
         }
     }
}

效果如下:

替换代码片段

可以使用正则表达式来替换某一段代码。

/**
 * 替换代码片段
 * {@snippet :
 *     public void hi() {
 *         System.out.println("Hello Java18!"); // @replace regex='".*"' replacement="..."
 *     }
 * }
 *
 */
public void hi() {
    System.out.println("Hello Java18!");
}

效果如下:

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

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

相关文章

短视频矩阵管理系统贴牌 源码开发

抖音账号矩阵的开发核心维度包括&#xff1a; 多账号管理开发维度&#xff1a;通过运用不同类型的账号矩阵&#xff0c;可以实现统一且便捷的管理。目前&#xff0c;矩阵系统支持管理抖音、快手、视频号,b站的账号&#xff0c;未来计划加入小红书,tk等等的账号管理。 矩阵账号…

如何编写高质量的用户故事

本文详细介绍了如何在敏捷开发过程中编写高质量用户故事&#xff08;User Story&#xff09;&#xff0c;包括用户故事的定义、结构、撰写技巧以及如何与产品待办列表&#xff08;Product Backlog&#xff09;中的其他工作项&#xff08;PBI&#xff09;相结合&#xff0c;以提…

【Elasticsearch系列廿二】特殊参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

解释器模式原理剖析和Spring中的应用

解释器模式原理剖析和Spring中的应用 解释器模式 是一种行为型设计模式&#xff0c;它定义了一种语言的文法表示&#xff0c;并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建语法解释器&#xff0c;例如计算器、简单编程语言的解释器等。 核心思想&#xff1a…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中&#xff08;如家庭或小型办公室宽带&#xff09;&#xff0c;远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合神卓互联NAS公网助手提供的DDNS&#xff08;动态域名服务&#xff09;功能&#xff0c;我们可以轻松实现通过…

蓝牙、WiFi、2.4G、Zigbee、LoRa、NB-IoT的区别与应用场景

在现代科技的推动下&#xff0c;无线通信技术已经成为我们生活中不可或缺的一部分。从智能家居到工业自动化&#xff0c;从远程监控到环境传感&#xff0c;每一种技术都有其独特的优势和应用场景。今天&#xff0c;我们将深入探讨六种主流的无线通信技术——蓝牙、WiFi、2.4G、…

基于vue框架的大参林药品信息管理系统的设计与实现8b4gt(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,药品分类,药品信息,医生 开题报告内容 基于Vue框架的大参林药品信息管理系统的设计与实现开题报告 一、引言 随着医疗健康行业的快速发展和信息化浪潮的推进&#xff0c;药品信息管理已成为提升医疗服务效率、保障患者用药安全、…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

状态模式原理剖析

《状态模式原理剖析》 状态模式&#xff08;State Pattern&#xff09; 是一种行为设计模式&#xff0c;它允许对象在其内部状态改变时改变其行为。换句话说&#xff0c;当对象状态发生变化时&#xff0c;它的行为也会随之变化。 核心思想&#xff1a; 状态模式将对象的不同状…

爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD

声明&#xff1a;本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 前言 这篇文章主要是研究如何动态生成后缀参数MmEwMD的&#xff0c;它是在文章爬虫逆向学习(六)&#xff1a;补环境过某数四代的基础上进行研究的&#xff0c;代码也是在它基础上增…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

场景介绍 实况窗是一种帮助用户聚焦正在进行的任务&#xff0c;方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明&#xff0c;请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型&#xff0c;分别是&#xff1a…

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦&#xff01;正点原子工程师手把手教你学&#xff01;彻底解决ARM32单片机项目入门难的问题&#xff01; 一、课程介绍 本课程专为ARM32单片机的入门学习者设计&#xff0c;涵盖了环境搭建、编程软件使用、模块基础驱动和多…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4da; 在线性代数中&#xff0c;逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵&#xff0c;意味着该矩阵是可逆的&#xff0c;或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github&#xff1a;https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码&#xff0c;并保持其余代…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重&#xff08;按列顺序&#xff09;unionByName 并集不去重&#xff08;按列名…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline&#xff1a;所有有效的声明式流水线必须包含在一个 pipeline 块中stages&#xff1a;包含一系列一个或多个stage指令stage&#xff1a;stage包含在stages中进行&#xff0c;比如某个阶段steps&#xff1a;在阶段中具体得执行操作&#xff0c;一个或…

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中&#xff0c;提高工作效率成为了每个人追求的目标。而在这个数字化时代&#xff0c;选择对的软件工具无疑是提高效率的关键。今天&#xff0c;我为大家推荐五款优秀的工作效率软件&#xff0c;帮助你在工作中事半功倍。 1、亿可达…

15个 Jenkins 面试题

Jenkins 已成为持续集成和持续部署 (CI/CD) 流程中使用最广泛的自动化服务器之一。凭借其强大的功能和广泛的插件生态系统&#xff0c;Jenkins 已成为全球软件开发团队的首选工具。如果您正在准备 Jenkins 面试&#xff0c;那么精通其概念、架构和最佳实践至关重要。 为了帮助…

1.3 MySql的用户管理

一、下载Mysql客户端 下载navicat:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 二、安装Navicat 三、创建数据库 创建一个数据库的连接吧&#xff0c;因为这个界面儿是图形界面儿&#xff0c;所以我们创建…

深入分析MySQL事务日志-Redo Log日志

文章目录 事务日志-Redo Log2.1 Redo Log2.1.1 Redo Log与持久性2.1.2 Redo Log的工作原理2.1.3 Redo Log的落盘策略2.1.4 Redo Log的系统参数 事务日志-Redo Log 事务的隔离性是通过锁实现&#xff0c;而事务的原子性、和持久性则是通过事务日志实现。在MySQL中&#xff0c;事…