Java文档注释用法+JavaDoc的使用详解

article/2025/10/27 6:31:48

Java文档注释+JavaDoc的使用详解

简介

文档注释负责描述类、接口、方法、构造器、成员属性。可以被JDK提供的工具 javadoc 所解析,自动生成一套以网页文件形式体现该程序说明文档的注释。

注意:文档注释必须写在类、接口、方法、构造器、成员字段前面,写在其他位置无效。

JavaDoc 官方说明
How to Write Doc Comments for the Javadoc Tool

写在类上面的JavaDoc

写在类上的文档标注一般分为三段:

  • 第一段:概要描述,通常用一句或者一段话简要描述该类的作用,以英文句号作为结束
  • 第二段:详细描述,通常用一段或者多段话来详细描述该类的作用,一般每段话都以英文句号作为结束
  • 第三段:文档标注,用于标注作者、创建时间、参阅类等信息

第一段:概要描述

单行示例:

package org.springframework.jdbc.core;
/*** Simple adapter for {@link PreparedStatementSetter} that applies a given array of arguments.**/
public class ArgumentPreparedStatementSetter implements PreparedStatementSetter, ParameterDisposer {
}

多行示例:

package java.lang;
/*** The {@code Long} class wraps a value of the primitive type {@code* long} in an object. An object of type {@code Long} contains a* single field whose type is {@code long}.** <p> In addition, this class provides several methods for converting* a {@code long} to a {@code String} and a {@code String} to a {@code* long}, as well as other constants and methods useful when dealing* with a {@code long}.** <p>Implementation note: The implementations of the "bit twiddling"* methods (such as {@link #highestOneBit(long) highestOneBit} and* {@link #numberOfTrailingZeros(long) numberOfTrailingZeros}) are* based on material from Henry S. Warren, Jr.'s <i>Hacker's* Delight</i>, (Addison Wesley, 2002).** @author  Lee Boynton* @author  Arthur van Hoff* @author  Josh Bloch* @author  Joseph D. Darcy* @since   JDK1.0*/
public final class Long extends Number implements Comparable<Long> {
}

在注释中出现以@开头的东东被称之为Javadoc文档标记,是JDK定义好的如@author@version@since@see@link@code@param@return@exception@throws等。

@link:{@link 包名.类名#方法名(参数类型)} 用于快速链接到相关代码

@link的使用语法{@link 包名.类名#方法名(参数类型)},其中当包名在当前类中已经导入了包名可以省略,可以只是一个类名,也可以是仅仅是一个方法名,也可以是类名.方法名,使用此文档标记的类或者方法,可用按住Ctrl键+鼠标单击快速跳到相应的类或者方法上,解析成html其实就是使用<code>包名.类名#方法名(参数类型)</code>

@link示例

// 完全限定的类名
{@link java.nio.charset.CharsetEncoder}// 省略包名
{@link String} and {@link StringBuilder}// 省略类名,表示指向当前的某个方法
{@link #equals(Object)}// 包名.类名#方法名(参数类型)
{@link java.lang.Long#toString(long)} 

@code: {@code text} 将文本标记为code

@code的使用语法{@code text} 会被解析成<code>text</code>
将文本标记为代码样式的文本,在code内部可以使用 < 、> 等不会被解释成html标签, code标签有自己的样式

一般在Javadoc中只要涉及到类名或者方法名,都需要使用@code进行标记。

第二段:详细描述

详细描述一般用一段或多段来详细描述类的作用,详细描述中可以使用html标签,如<p><pre><a><ul><i> 等标签, 通常详细描述都以段落p标签开始。
详细描述和概要描述中间通常有一个空行来分割, 实例如下

package org.springframework.util;
/*** Miscellaneous {@link String} utility methods.** <p>Mainly for internal use within the framework; consider* <a href="http://commons.apache.org/proper/commons-lang/">Apache's Commons Lang</a>* for a more comprehensive suite of {@code String} utilities.** <p>This class delivers some simple functionality that should really be* provided by the core Java {@link String} and {@link StringBuilder}* classes. It also provides easy-to-use methods to convert between* delimited strings, such as CSV strings, and collections and arrays.** @author Rod Johnson* @author Juergen Hoeller* @author Keith Donald* @author Rob Harrop* @author Rick Evans* @author Arjen Poutsma* @author Sam Brannen* @author Brian Clozel* @since 16 April 2001*/
public abstract class StringUtils {}

一般段落都用p标签来标记,凡涉及到类名和方法名都用@code标记,凡涉及到组织的,一般用a标签提供出来链接地址。

@param

一般类中支持泛型时会通过@param来解释泛型的类型

package java.util;
/*** @param <E> the type of elements in this list**/
public interface List<E> extends Collection<E> {}

@author

详细描述后面一般使用@author来标记作者,如果一个文件有多个作者来维护就标记多个@author@author后面可以跟作者姓名(也可以附带邮箱地址)、组织名称(也可以附带组织官网地址)

// 纯文本作者
@author Rod Johnson// 纯文本作者,邮件
@author Igor Hersht, igorh@ca.ibm.com// 超链接邮件 纯文本作者
@author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>// 纯文本邮件
@author shane_curcuru@us.ibm.com// 纯文本 组织
@author Apache Software Foundation// 超链接组织地址 纯文本组织
@author <a href="https://jakarta.apache.org/turbine"> Apache Jakarta Turbine</a>

@see 另请参阅

@see 一般用于标记该类相关联的类,@see即可以用在类上,也可以用在方法上。

/*** @see IntStream* @see LongStream* @see DoubleStream* @see <a href="package-summary.html">java.util.stream</a>* /
public interface Stream<T> extends BaseStream<T, Stream<T>> {}

@since 从以下版本开始

@since 一般用于标记文件创建时项目当时对应的版本,一般后面跟版本号,也可以跟是一个时间,表示文件当前创建的时间

package java.util.stream;/**
* @since 1.8
*/
public interface Stream<T> extends BaseStream<T, Stream<T>> {}
package org.springframework.util;/**
* @since 16 April 2001
*/
public abstract class StringUtils {}

@version 版本

@version用于标记当前版本,默认为1.0

 package com.sun.org.apache.xml.internal.resolver;/*** @version 1.0*/
public class CatalogManager {}

写在方法上的JavaDoc

写在方法上的文档标注一般分为三段:

  • 第一段:概要描述,通常用一句或者一段话简要描述该方法的作用,以英文句号作为结束
  • 第二段:详细描述,通常用一段或者多段话来详细描述该方法的作用,一般每段话都以英文句号作为结束
  • 第三段:文档标注,用于标注参数、返回值、异常、参阅等

方法详细描述上经常使用html标签,通常都以p标签开始,而且p标签通常都是单标签,不使用结束标签,其中使用最多的就是p标签和pre标签,ul标签, i标签。

pre标签可定义预格式化的文本。被包围在pre标签中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体,pre标签的一个常见应用就是用来表示计算机的源代码。

一般p经常结合pre使用,或者pre结合@code共同使用(推荐@code方式)
一般经常使用pre来举例如何使用方法

注意:pre标签中如果有小于号、大于号、例如泛型 在生产javadoc时会报错

p结合pre使用

/*** Check that the given {@code CharSequence} is neither {@code null} nor* of length 0.* <p>Note: this method returns {@code true} for a {@code CharSequence}* that purely consists of whitespace.* <p><pre class="code">* StringUtils.hasLength(null) = false* StringUtils.hasLength("") = false* StringUtils.hasLength(" ") = true* StringUtils.hasLength("Hello") = true* </pre>* @param str the {@code CharSequence} to check (may be {@code null})* @return {@code true} if the {@code CharSequence} is not {@code null} and has length* @see #hasText(String)*/
public static boolean hasLength(@Nullable CharSequence str) {return (str != null && str.length() > 0);
}

pre结合@code使用

<pre>{@codePerson[] men = people.stream().filter(p -> p.getGender() == MALE).toArray(Person[]::new);
}</pre>

@param

@param 后面跟参数名,再跟参数描述

/*** @param str the {@code CharSequence} to check (may be {@code null})*/
public static boolean hasText(@Nullable CharSequence str) {return (str != null && str.length() > 0 && containsText(str));
}

@return

@return 跟返回值的描述

/*** @return {@code true} if the {@code CharSequence} is not {@code null},* its length is greater than 0, and it does not contain whitespace only*/
public static boolean hasText(@Nullable CharSequence str) {return (str != null && str.length() > 0 && containsText(str));
}

@throws

@throws 跟异常类型 异常描述 , 用于描述方法内部可能抛出的异常

/*** @throws IllegalArgumentException when the given source contains invalid encoded sequences*/
public static String uriDecode(String source, Charset charset) {}

@exception

@exception 用于描述方法签名throws对应的异常

package com.sun.jmx.remote.security;
/*** @exception LoginException if the logout fails.*/
public boolean logout() throws LoginException {}

@deprecated

@deprecated 用于标注一个类或成员已过期,通常配合{@link}使用

/**
* @deprecated as of 5.0.4, in favor of {@link Locale#toLanguageTag()}
*/
@Deprecated
public static String toLanguageTag(Locale locale) {
return locale.getLanguage() + (hasText(locale.getCountry()) ? "-" + locale.getCountry() : "");
}

@see

@see 既可以用来类上也可以用在方法上,表示可以参考的类或者方法

/**
* @see java.net.URLDecoder#decode(String, String)
*/
public static String uriDecode(String source, Charset charset) {}

@value

{@value} 用于标注在常量上用于表示常量的值

/** 默认数量 {@value} */
private static final Integer QUANTITY = 1;

@inheritDoc

@inheritDoc 用于注解在重写方法或者子类上,用于继承父类中的Javadoc

  • 基类的文档注释被继承到了子类
  • 子类可以再加入自己的注释(特殊化扩展)
  • @return @param @throws 也会被继承

示例

spring-core中的StringUtils 示例

package org.springframework.util;
/*** Miscellaneous {@link String} utility methods.** <p>Mainly for internal use within the framework; consider* <a href="http://commons.apache.org/proper/commons-lang/">Apache's Commons Lang</a>* for a more comprehensive suite of {@code String} utilities.** <p>This class delivers some simple functionality that should really be* provided by the core Java {@link String} and {@link StringBuilder}* classes. It also provides easy-to-use methods to convert between* delimited strings, such as CSV strings, and collections and arrays.** @author Rod Johnson* @author Juergen Hoeller* @author Keith Donald* @author Rob Harrop* @author Rick Evans* @author Arjen Poutsma* @author Sam Brannen* @author Brian Clozel* @since 16 April 2001*/
public abstract class StringUtils {/*** Check that the given {@code CharSequence} is neither {@code null} nor* of length 0.* <p>Note: this method returns {@code true} for a {@code CharSequence}* that purely consists of whitespace.* <p><pre class="code">* StringUtils.hasLength(null) = false* StringUtils.hasLength("") = false* StringUtils.hasLength(" ") = true* StringUtils.hasLength("Hello") = true* </pre>* @param str the {@code CharSequence} to check (may be {@code null})* @return {@code true} if the {@code CharSequence} is not {@code null} and has length* @see #hasText(String)*/public static boolean hasLength(@Nullable CharSequence str) {return (str != null && str.length() > 0);}
}

亲自实践

package com.example.javadocdemo;import java.math.BigDecimal;
import java.util.Objects;/*** 类 {@code OrderService} 订单服务层.** <p> 主要包括 创建订单、取消订单、查询订单等功能更** @see Order* @author <a href="mailto:lerryli@foxmail.com">Lerry Li</a>* @since 2019/05/06*/
public class OrderService {/** 默认数量 {@value} */private static final Integer QUANTITY = 1;/*** 创建订单.** <p> 创建订单需要传用户id和商品列表(商品id和商品数量).** <pre>{@code*  演示如何使用该方法*  List<Goods> items = new ArrayList<>();*  Goods goods = new Goods(1L, BigDecimal.ONE);*  Goods goods2 = new Goods(2L, BigDecimal.TEN);*  items.add(goods);*  items.add(goods2);**  Order order1 = new Order();*  order.setUserId("1");*  order.setItems(items);*  OrderService#createOrder(order);* }* </pre>** @param order 订单信息* @throws NullPointerException 参数信息为空* @exception IllegalArgumentException  数量不合法* @return 是否创建成功* @version 1.0* @see Order*/public boolean createOrder(Order order) throws IllegalArgumentException{Objects.requireNonNull(order);List<Goods> items = order.getItems();items.forEach(goods -> {BigDecimal quantity = goods.getQuantity();if (quantity == null || BigDecimal.ZERO.compareTo(quantity) == 0) {throw new IllegalArgumentException();}});System.out.println("create order...");return true;}
}

生成JavaDoc

通过IDEA生成Javadoc: Tools –> Generate JavaDoc
注意要配置编码,如果不配置则生成的JavaDoc会乱码,还需要配置Output directory
Generate JavaDoc
参数配置
这里有几点要特别注意一下:

  1. IDEA 的 JavaDoc 生成功能在菜单 Tools->Generate JavaDoc 项里面。
  2. 点击上述菜单项后,会出现生成 JavaDoc 的对话框,一般的选项都很直观,不必细说。但是要注意生成 JavaDoc 的源代码对象的选择,一般以模块(Module)为主,必要时可以单独选择必要的 Java 源代码文件,不推荐以 Project 为 JavaDoc 生成的源范围。
  3. 里面有一个 Locale 可选填项,表示的是需要生成的 JavaDoc 以何种语言版本展示,根据 javadoc.exe 的帮助说明,这其实对应的就是 javadoc.exe 的 -locale 参数,如果不填,默认可能是英文或者是当前操作系统的语言,既然是国人,建议在此填写 zh_CN,这样生成的 JavaDoc 就是中文版本的,当然指的是 JavaDoc 的框架中各种通用的固定显示区域都是中文的。你自己编写的注释转换的内容还是根据你注释的内容来。
  4. 还有一个“Other command line arguments:”可选填项,非常重要,是填写直接向 javadoc.exe 传递的参数内容。因为有一些重要的设置,只能通过直接参数形式向 javadoc.exe 传递。这里必须要填写如下参数:
-encoding UTF-8 -charset UTF-8 -windowtitle "JavaDoc使用详解" -link https://docs.oracle.com/javase/8/docs/api
  1. 第一个参数 -encoding UTF-8 表示你的源代码(含有符合 JavaDoc 标准的注释)是基于 UTF-8 编码的,以免处理过程中出现中文等非英语字符乱码;第二个参数 -charset UTF-8 表示在处理并生成 JavaDoc 超文本时使用的字符集也是以 UTF-8 为编码,目前所有浏览器都支持 UTF-8,这样最具有通用性,支持中文非常好;第三个参数 -windowtitle 表示生成的 JavaDoc 超文本在浏览器中打开时,浏览器窗口标题栏显示的文字内容;第四个参数 -link 很重要,它表示你生成的 JavaDoc 中涉及到很多对其他外部 Java 类的引用,是使用全限定名称还是带有超链接的短名称,举个例子,我创建了一个方法 public void func(String arg),这个方法在生成 JavaDoc 时如果不指定 -link 参数,则 JavaDoc 中对该方法的表述就会自动变为 public void func(java.lang.String arg),因为 String 这个类对我自己实现的类来讲就是外部引用的类,虽然它是 Java 标准库的类。如果指定了 -link https://docs.oracle.com/javase/8/docs/api/ 参数,则 javadoc.exe 在生成 JavaDoc 时,会使用 String 这样的短名称而非全限定名称 java.lang.String,同时自动为 String 短名称生成一个超链接,指向官方 JavaSE 标准文档 https://docs.oracle.com/javase/8/docs/api/ 中对 String 类的详细文档地址。-link 实质上是告诉 javadoc.exe 根据提供的外部引用类的 JavaDoc 地址去找一个叫 package-list 的文本文件,在这个文本文件中包含了所有外部引用类的全限定名称,因此生成的新 JavaDoc 不必使用外部引用类的全限定名,只需要使用短名称,同时可以自动创建指向其外部引用 JavaDoc 中的详细文档超链接。每个 JavaDoc 都会在根目录下有一个 package-list 文件,包括我们自己生成的 JavaDoc。

查看成果

配置完毕后点击OK按钮,console看到如下日志输出则说明JavaDoc生成成功
生成JavaDoc
JavaDoc 生成完毕,即可在其根目录下找到 index.html 文件,打开它就可以看到我们自己的标准 JavaDoc API 文档啦。
生成后的JavaDoc
类结构
方法资料



http://chatgpt.dhexx.cn/article/SgeWwo7Z.shtml

相关文章

Java教程:Javadoc(文档注释)详解

本篇文章由 泉州SEO www.234yp.com 整理发布&#xff0c;Java教程 www.234yp.com/Article/198092.html 谢谢合作&#xff01;Java教程Java 支持 3 种注释&#xff0c;分别是单行注释、多行注释和文档注释。文档注释以/**开头&#xff0c;并以*/结束&#xff0c;可以通过 Javado…

Javadoc (Java API 文档生成器)详解 [Javadoc 概述][Javadoc 标签][Javadoc 命令][Javadoc 生成 API 文档]

您的“关注”和“点赞”&#xff0c;是认可&#xff0c;是支持&#xff0c;是动力。 如意见相佐&#xff0c;可留言。 本人必将竭尽全力试图做到准确和全面&#xff0c;终其一生进行修改补充更新。 本文首发在IT羊资源网。 《IT羊资源网》&#xff0c;网址&#xff1a;https://…

Javadoc 使用详解

分享一个朋友的人工智能教程(请以“右键”->"在新标签页中打开连接”的方式访问)。比较通俗易懂&#xff0c;风趣幽默&#xff0c;感兴趣的朋友可以去看看。 很多程序对Javadoc都不重视&#xff0c;认识不到Javadoc的作用&#xff0c;很多人都是这样认为的&#xff1a;…

IntelliJ IDEA开发工具安装教程(2022.2最新版)

IntelliJ IDEA开发工具安装教程&#xff08;2022.2最新版&#xff09; 下载官网网址&#xff1a; https://www.jetbrains.com/idea/ 一、下载安装&#xff1a; 1&#xff0c; 打开官网下载IntelliJ IDEA&#xff0c;刚打开网站是这样的。点击Download 2. 左边Ultimate是旗舰…

Java小白必会!Intellij IDEA安装、配置及使用详细教程

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 配套开源项目资料 Github&#xff1a; GitHub - SunLtd/LearnJava Gitee&#xff1a; 一一哥/从零开始学Jav…

IDEA安装及使用教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 IDEA的下载及安装教程一、IDEA的下载二、安装教程1、安装2.运行IDEA 以上就是IDEA的安装及配置啦&#xff01;&#xff01;&#xff01; IDEA的下载及安装教程 提示…

IntelliJ IDEA下载安装配置教程(完全)

1 百度搜索idea 2 点击进入 3 选择旗舰版下载 4 点击安装 5 安装 6 激活 点击桌面图标后&#xff0c;接受什么的&#xff0c;点击LICENSE SERVER&#xff0c;(忘了截图&#xff0c;原谅我)&#xff0c; 输入http://idea.congm.in 点击active即可。 7 配置&#xff08;很重要&…

IDEA 下载安装教程

IntelliJ IDEA 简称 IDEA&#xff0c;由 JetBrains 公司开发&#xff0c;功能很强大 1.首先打开IntelliJ IDEA 官网&#xff08;官网地址为 IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains&#xff09; 2.打开下载好的文件&#xff0c;Next 3. 安装路径一…

JAVA intellij idea社区版安装教程

文章目录 JAVA intellij idea社区版安装教程下载 intellij idea 编写HelloWorld修改字体修改编程背景 JAVA intellij idea社区版安装教程 下载 intellij idea 下载链接 一、下载社区版 二、点击next 三、选择自己下载的路径 四、推荐勾选 五、安装 六、耐心等待 七、完成 八…

IntelliJ IDEA 2023安装教程【Windows系统】

目录 一、确认JDK 二、安装IntelliJ IDEA 三、测试环境 四、实用插件安装 一、确认JDK 1、打开命令提示符&#xff0c;输入如下命令查看是否有JDK java -version 2、如果没有的话请参考这篇文章的第一节 安装JDK 二、安装IntelliJ IDEA 1、进入官网&#xff0c;选择操作…

IntelliJ IDEA安装操作步骤

一、下载安装 1、打开官网&#xff1a;http://www.jetbrains.com/idea/&#xff0c;点击页面中的“DOWNLOAD” 2、根据自己的需要选择下载的IntelliJ IDEA版本&#xff0c;此处我的电脑是Windows7 64 位的&#xff0c;我选择的是Community&#xff08;社区版&#xff09; 3、…

IntelliJ IDEA安装图文教程

IntelliJ IDEA 是 java语言开发的集成环境&#xff0c;在业界被公认为最好的 java开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具&#xff08;git、svn等&#xff09;、JUnit、CVS整合、代码分析、 创新的 GUI设计等方面的功能可以说…

Intellij IDEA 安装配置(超详细)

【1】点击进入 IDEA 官网 点击直接进入下载页面&#xff1a; https://www.jetbrains.com/zh-cn/idea/download/other.html官方下载网址https://www.jetbrains.com/idea/ 新手可以点击右上角【文/A】选择中文模式 对于像我一样的新手选择Community(社区版)下的2021.3.3-windows(…

如何安装 IntelliJ IDEA 最新版本——详细教程

IntelliJ IDEA 简称 IDEA&#xff0c;被业界公认为最好的 Java 集成开发工具&#xff0c;尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克&#xff0c;开发人员以严谨著称的东欧程序员为主…

2022 最新 IntelliJ IDEA 详细安装步骤 图例演示(图文版)

前言 IDEA 全称 IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。 IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可…

IDEA 2021.3 安装教程

直接在idea下载最新的版本&#xff1a;IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 安装包下载后&#xff0c;安装直接下一步&#xff0c;下一步&#xff0c;完成。 安装完了之后&#xff0c;不用急着打开。 下面我们来下载代理插件&#xff1a;Rele…

全网最详细的idea安装教程

文章目录 一、IDEA简介二、IDEA安装步骤 一、IDEA简介 IDEA 全称 IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CV…

2022 IDEA 手把手 安装 配置教程

IDEA&#xff0c;Clion&#xff0c;Pycharm&#xff0c;Webstorm等等都适用 目录 一、官网下载 二、开始安装 三、开始配置 字体设置 滚轮滑动 自动导包 补全提示 代码忽略大小写 格式化代码 一、官网下载 https://www.jetbrains.com.cn/idea/download/#sectionwindo…

IDEA安装教程

IDEA安装 正所谓工欲善其事必先利其器&#xff0c;我们在开发 Java 语言过程中同样需要一款不错的开发工具&#xff0c;目前市场上的 IDE 很多&#xff0c;本文为大家推荐以下下几款 Java 开发工具&#xff1a; Eclipse&#xff1a;另一个免费开源的 Java IDE&#xff0c;下载…

IntelliJ IDEA 的安装使用教程

IntelliJ IDEA 的安装使用教程 一&#xff0c;安装操作步骤&#xff1a; 1、打开官网Thank you for downloading IntelliJ IDEA! (jetbrains.com)进行下载&#xff0c;这里选择点击intelliJ IDEA进入下载页面 2、根据自身的需求可下载专业版或者免费社区版&#xff0c;进行下…