当前位置: 首页 > article >正文

2024-04-19| Java: Documented注解学习 JavaDoc

在 Java 中,@Documented 是一个元注解(meta-annotation),用于标记其他注解,表明这些注解应该被包含在 JavaDoc 文档中。以下是关于 @Documented 注解的作用的简要说明:

作用

  • 记录注解信息到 JavaDoc:当一个注解被 @Documented 标记时,使用该注解的代码元素(类、方法、字段等)的注解信息会出现在生成的 JavaDoc 文档中。
  • 没有 @Documented 的注解在生成 JavaDoc 时不会出现在文档中。

使用场景

  • 自定义注解:如果你定义了一个自定义注解,并且希望它的使用情况被记录在 JavaDoc 中,就需要使用 @Documented
  • 提高文档可读性:对于需要向开发者展示注解信息的场景,@Documented 确保注解的存在和作用被清晰记录。

代码示例

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;// 定义一个自定义注解,使用 @Documented
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface MyAnnotation {String value() default "default";
}// 使用自定义注解
@MyAnnotation("example")
public class MyClass {public static void main(String[] args) {System.out.println("Hello, World!");}
}

在生成 JavaDoc 时,@MyAnnotation("example") 会出现在 MyClass 的文档中。如果没有 @Documented,则不会显示。

注意事项

  1. 必须与 @Retention 配合@Documented 通常需要注解的 @Retention 策略为 RetentionPolicy.RUNTIMERetentionPolicy.CLASS,否则注解在运行时或编译时不可见,文档化无意义。
  2. 只影响 JavaDoc@Documented 不会影响注解的运行时行为,仅影响文档生成。
  3. 内置注解示例:Java 中的许多标准注解(如 @Deprecated@Override)都使用了 @Documented,因此它们的信息会出现在 JavaDoc 中。

总结

@Documented 的核心作用是确保自定义注解的使用信息被记录到 JavaDoc 中,适合需要公开文档化的场景。使用时需结合 @Retention@Target 等元注解以确保正确行为。

如果有更具体的问题或需要进一步解释,请告诉我!


Javadoc 是 Java 提供的一种工具和文档生成规范,用于从 Java 源代码中提取注释、类、方法、字段等信息,生成 API 文档(通常为 HTML 格式)。它是开发者和团队分享代码功能、接口说明的重要工具。

核心概念

  1. Javadoc 注释

    • 使用 /** ... */ 格式的特殊注释,称为 Javadoc 注释。
    • 通常包含描述信息和特定的 Javadoc 标签(如 @param@return@throws 等)。
    • 示例:
      /*** 计算两个整数的和。* @param a 第一个整数* @param b 第二个整数* @return 两数之和* @throws IllegalArgumentException 如果输入不合法*/
      public int add(int a, int b) {if (a < 0 || b < 0) throw new IllegalArgumentException("负数不可用");return a + b;
      }
      
  2. Javadoc 工具

    • 随 JDK 提供,命令行工具(如 javadoc)解析源代码中的 Javadoc 注释,生成 HTML 格式的 API 文档。
    • 运行示例:javadoc -d docs MyClass.java,会在 docs 目录生成文档。
  3. 生成的文档

    • 包含类、接口、方法、字段的说明,以及继承关系、方法参数、返回值、异常等信息。
    • 常用于生成项目 API 参考文档,类似 Java 官方 API 文档(https://docs.oracle.com/en/java/javase/17/docs/api/)。

Javadoc 标签

常用标签包括:

  • @param:描述方法参数。
  • @return:描述返回值。
  • @throws@exception:描述抛出的异常。
  • @author:作者信息。
  • @version:版本信息。
  • @see:引用其他类或方法。
  • @since:指明从哪个版本开始引入。

@Documented 的关系

  • 如果一个自定义注解使用了 @Documented 元注解,那么该注解在代码中的使用情况(如 @MyAnnotation)会出现在 Javadoc 生成的文档中。
  • 没有 @Documented 的注解不会显示在 Javadoc 中,即使它被应用到类或方法上。

使用场景

  • API 文档生成:为库或框架生成用户友好的文档。
  • 团队协作:帮助开发者理解代码的功能和用法。
  • 开源项目:提供清晰的接口说明,方便用户使用。

运行 Javadoc

  1. 编写带有 Javadoc 注释的代码。
  2. 使用命令:
    javadoc -d <输出目录> -sourcepath <源代码目录> <包名或文件>
    
  3. 查看生成的 HTML 文件(如 index.html)。

注意事项

  • 注释清晰:Javadoc 注释应简洁、准确,避免歧义。
  • 编码问题:生成文档时可能需要指定编码,如 -encoding UTF-8
  • 私有成员:默认不生成私有方法/字段的文档,可用 -private 选项包含。

示例输出

对于上面的 add 方法,Javadoc 可能生成如下 HTML 内容:

<h3>add</h3>
<p>计算两个整数的和。</p>
<ul><li><b>Parameters:</b> a - 第一个整数, b - 第二个整数</li><li><b>Returns:</b> 两数之和</li><li><b>Throws:</b> IllegalArgumentException - 如果输入不合法</li>
</ul>

总结

Javadoc 是 Java 生态中用于生成 API 文档的标准工具,通过 /** ... */ 注释和标签提取代码信息,生成结构化的 HTML 文档。它与 @Documented 结合使用时,可确保自定义注解信息也出现在文档中,是开发和文档化的重要组成部分。

如果需要更详细的用法或示例,请告诉我!

相关文章:

2024-04-19| Java: Documented注解学习 JavaDoc

在 Java 中&#xff0c;Documented 是一个元注解&#xff08;meta-annotation&#xff09;&#xff0c;用于标记其他注解&#xff0c;表明这些注解应该被包含在 JavaDoc 文档中。以下是关于 Documented 注解的作用的简要说明&#xff1a; 作用 记录注解信息到 JavaDoc&#x…...

Spring Boot常用注解全解析:从入门到实战

&#x1f331; Spring Boot常用注解全解析&#xff1a;从入门到实战 #SpringBoot核心 #注解详解 #开发技巧 #高效编程 一、核心启动与配置注解 1. SpringBootApplication 作用&#xff1a;标记主启动类&#xff0c;整合了Configuration、EnableAutoConfiguration和Component…...

【重学Android】1.关于@Composer注解的一点知识笔记

最新因为一些原因&#xff0c;开始重新学习Android及kotlin编程&#xff0c;也觉得可以顺带记录下这个过程中的一些知识点&#xff0c;也可以用作日后自己查找复习。 Composable 注解在 Android 开发中的使用 Composable 是 Jetpack Compose&#xff08;Android 的现代声明式…...

【排队论】Probabilistic Forecasts of Bike-Sharing Systems for Journey Planning

Probabilistic Forecasts of Bike-Sharing Systems forJourney Planning abstract 我们研究了对共享单车系统&#xff08;BSS&#xff09;车站未来自行车可用性进行预测的问题。这是相关的&#xff0c;以便提出建议&#xff0c;保证用户能够进行旅行的概率足够高。为此&#x…...

大数据平台简介

一、分布式系统基础架构 &#xff08;一&#xff09;定义与核心特征 分布式系统是由多台计算机&#xff08;节点&#xff09;通过网络协作组成的系统&#xff0c;对外表现为一个统一整体。其核心特征包括&#xff1a; 去中心化&#xff1a;节点平等或分角色协作&#xff08;如…...

加一:从简单问题到复杂边界的深度思考

加一&#xff1a;从简单问题到复杂边界的深度思考 引言 在算法世界里&#xff0c;有些问题看似简单&#xff0c;实则暗藏玄机&#xff0c;其中“加一”问题就是一个典型例子。所谓“加一”&#xff0c;通常指的是给一个由数字组成的数组表示的整数加一&#xff0c;这听起来简…...

高精度算法(加、减、乘、除、阶乘和)​

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 唯有主动付出&#xff0c;才有丰富的果…...

实战设计模式之备忘录模式

概述 与解释器模式、迭代器模式一样&#xff0c;备忘录模式也是一种行为设计模式。备忘录模式允许我们保存一个对象的状态&#xff0c;并在稍后恢复到这个状态。该模式非常适合于需要回滚、撤销或历史记录等功能的应用场景。通过使用备忘录模式&#xff0c;开发者可以轻松添加诸…...

keil5 µVision 升级为V5.40.0.0:增加了对STM32CubeMX作为全局生成器的支持,主要有哪些好处?

在Keil5 μVision V5.40.0.0版本中,增加了对STM32CubeMX作为全局生成器的支持,这一更新主要带来了以下三方面的提升: 开发流程整合STM32CubeMX原本就支持生成Keil项目代码,但新版本将这一集成升级为“全局生成器”级别,意味着STM32CubeMX生成的代码能直接成为Keil项目的核…...

吉尔吉斯斯坦工商会代表团赴齐河德瑞新能源汽车考察

德州齐河&#xff0c;2025年4月15日电 时中美贸易突变之际&#xff0c;乘国家一带一路之风。 展中国新能源之宏图&#xff0c;塑国贸体系之新方向。 今日上午&#xff0c;吉尔吉斯斯坦共和国工商会代表团一行三人受邀抵达济南&#xff0c;开启对德瑞新能源科技有限公司&…...

无人机在农业中的应用与挑战!

一、无人机在农业中的作用 1. 提升作业效率与降低成本 无人机在喷洒农药、播种、施肥、吊运等环节显著提升效率。例如&#xff0c;湖北秭归县使用大疆T100无人机吊运脐橙&#xff0c;单次85公斤的运输任务仅需2分钟&#xff0c;而人工需1小时&#xff0c;综合成本降低250元…...

放松大脑的方法

帮助一个人放松大脑&#xff0c;需要结合生理调节、心理技巧和环境优化。以下是一些科学有效的方法&#xff0c;涵盖即时缓解和长期习惯培养&#xff1a; 一、即时放松技巧&#xff08;快速起效&#xff09; 1. 深呼吸法&#xff08;4-7-8呼吸&#xff09; 方法&#xff1a;吸…...

QT网络拓扑图绘制实验

前言 在网络通讯中&#xff0c;我qt常用的是TCP或者UDP协议&#xff0c;就比方说TCP吧&#xff0c;一台服务器有时可能会和多台客户端相连接&#xff0c;我之前都是处理单链接情况&#xff0c;最近研究图结构的时候&#xff0c;突然就想到了这个问题。那么如何解决这个问题呢&…...

英语四级翻译题练习文章示例

大学正慢慢成为过去吗?Are universiities slowly becoming a thing of the past? 1.1900年前后&#xff0c;法国艺术家让-马克科泰接受委托绘制一组图画&#xff0c;描绘他认为的2000年人们可能过上的生活。Around 1900, the French artist Jean-Marc Cote was commissioned …...

支持中文对齐的命令行表格打印python库——tableprint

文章目录 快速入门 还在为表格中含有中文&#xff0c;命令行打印无法对齐而苦恼吗&#xff1f; 还在为冗长的数据添加代码而抓狂吗&#xff1f; tableprint来了&#xff01;&#xff01;&#xff01;&#xff0c;它完美的解决了上述两个问题&#xff0c;快来试试吧&#xff01;…...

从《周游记3》演绎歌剧版《菊花台》,周杰伦婚礼曲目意大利文版惊喜亮相

今天&#xff08;4月19日&#xff09;22:00&#xff0c;由魔胴西西里咖啡冠名的户外实境互动综艺《周游记3》第四期即将播出。本期节目中&#xff0c;“J式之旅”发起人周杰伦和林暐恒、杜国璋、陈冠霖、陈冠廷&#xff0c;将继续意大利之旅&#xff0c;从那不勒斯的百年老店到…...

生物化学笔记:医学免疫学原理23 免疫检查点分子与肿瘤免疫治疗(PD-1抑制剂黑色素瘤)

免疫检查点分子与肿瘤免疫治疗 免疫检查点分子与肿瘤免疫治疗-2...

CasualLanguage Model和Seq2Seq模型的区别

**问题1&#xff1a;**Causal Language Modeling 和 Conditional Generation 、Sequence Classification 的区别是什么&#xff1f; 因果语言模型(Causal Language Model)&#xff1a; 预测给定文本序列中的下一个字符&#xff0c;一般用于文本生成、补全句子等&#xff0c;模型…...

verilog float mult

module pipe_float_mul(input wire clk ,// 时钟信号input wire en ,// 使能信号input wire rst_n ,// 复位信号input wire round_cfg ,// 决…...

微信小程序调用yolo目标检测模型

目录 后端 前端微信小程序 完整代码 后端 利用Flask&#xff0c;调用目标检测模型&#xff0c;后端代码如下。 # flask_yolo.py from flask import Flask, request, jsonify from ultralytics import YOLO from PIL import Imageapp Flask(__name__) model_path best.p…...

Flink框架十大应用场景

Flink框架适合应用的场景 1. 流式数据处理 Flink框架最常用的应用场景是流式数据处理。流式数据处理是指对实时数据进行处理,以便及时地做出决策。例如,一个电商网站需要对用户的行为进行实时分析,以便根据用户的兴趣和行为推荐商品。Flink框架可以帮助电商网站实时地处理数…...

Crawl4AI:重塑大语言模型数据供给的开源革命者

在AI技术飞速迭代的今天&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的进化已从单纯参数竞赛转向数据质量与实时性的深度博弈。传统API接口的僵化、静态数据库的滞后性&#xff0c;正在成为制约AI系统实用价值的桎梏。而Crawl4AI的出现&#xff0c;以开源之力重构了数…...

Android 应用wifi direct连接通信实现

一. 打开Wi-Fi direct 1.必须启用Wi-Fi功能&#xff1a;在设备设置中开启Wi-Fi主开关&#xff08;即使未连接路由器&#xff09; 关闭冲突功能&#xff1a;若已开启「热点共享」或连接到其他Wi-Fi网络&#xff0c;需先关闭相关功能以避免硬件占. <!-- Wi-Fi Direct 核心权限…...

Java 动态代理教程(JDK 动态代理)(以RPC 过程为例)

1. 什么是动态代理 在运行时为指定的接口自动生成代理对象&#xff0c;并通过 invoke 方法增强了这些对象的功能 2. 两个核心组件 java.lang.reflect.Proxy类 这个类提供了方法&#xff1a;newProxyInstance()用来创建一个代理对象 public static Object newProxyInstance(…...

【android telecom 框架分析 01】【基本介绍 2】【BluetoothPhoneService为何没有源码实现】

1. 背景 我们会在很多资料上看到 BluetoothPhoneService 类&#xff0c;但是我们在实际 aosp 中确找不到具体的实现&#xff0c; 这是为何&#xff1f; 这是一个很好的问题&#xff01;虽然在车载蓝牙电话场景中我们经常提到类似 BluetoothPhoneService 的概念&#xff0c;但…...

【mongodb】数据库操作

目录 1. 查看所有数据库2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则创建&#xff09;3. 查看当前使用的数据库4. 删除当前数据库5.默认数据库 1. 查看所有数据库 1.show dbs2.show databases 2. 切换到指定数据库&#xff08;若数据库不存在&#xff0c;则…...

【Harmony】文本公共接口EditMenuOptions的使用

文章目录 一、EditMenuOptions介绍二、相关接口介绍2.1、editMenuOptions2.2、EditMenuOptionsonCreateMenu函数说明onMenuItemClick函数说明 2.3、TextRange对象说明2.4、TextMenuItem对象说明2.5、TextMenuItemId属性ofequals 三、简单案例 一、EditMenuOptions介绍 EditMen…...

《软件设计师》复习笔记(14.1)——面向对象基本概念、分析设计测试

目录 一、面向对象基本概念 对象&#xff08;Object&#xff09; 类&#xff08;Class&#xff09; 抽象&#xff08;Abstraction&#xff09; 封装&#xff08;Encapsulation&#xff09; 继承&#xff08;Inheritance&#xff09; 多态&#xff08;Polymorphism&#…...

C++ 基于多设计模式下的同步异步⽇志系统-1准备工作

一.项目介绍 项⽬介绍 本项⽬主要实现⼀个⽇志系统&#xff0c; 其主要⽀持以下功能: • ⽀持多级别⽇志消息 • ⽀持同步⽇志和异步⽇志 • ⽀持可靠写⼊⽇志到控制台、⽂件以及滚动⽂件中 • ⽀持多线程程序并发写⽇志 • ⽀持扩展不同的⽇志落地⽬标地 二.日志系统的三种实现…...

JS中实现类似sleep、wait、delay的延时功能

前言 编写代码时很多时候需要进行流程化的操作&#xff0c;各个流程间通常需要等待一定时间&#xff0c;这在很多语言中通常可以使用 sleep 、 wait 、 delay 等函数来实现。JavaScript原生并没有类似的功能&#xff0c;想要延时通常就是使用 setTimeout(functionRef, delay) …...