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 結合使用時,可確保自定義注解信息也出現在文檔中,是開發和文檔化的重要組成部分。

如果需要更詳細的用法或示例,請告訴我!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76407.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

15.Chromium指紋瀏覽器開發教程之WebAudio指紋定制

WebAudio指紋概述 瀏覽器中的 WebAudio API 提供了豐富的功能&#xff0c;其中包括了大量生成和處理音頻數據的API。WebAudio API 的音頻指紋技術是一種利用音頻信號的特征來唯一標識音頻的技術。因為WebAudio API 提供了豐富的音頻處理功能&#xff0c;包括合成、過濾、分析等…

2025年贛教云智慧作業微課PPT模板

江西的老師們注意&#xff0c;2025年贛教云智慧作業微課PPT模版和往年不一樣&#xff0c;千萬不要搞錯了&#xff0c;圖上的才是正確的2025年的贛教云智慧作業微課PPT模版&#xff0c;贛教云智慧作業官網有問題&#xff0c;無法正確下載該模板&#xff0c;需要該模板的&#xf…

2.5.1DOS下常用工具 curl,netstat,telnet命令使用

curl命令 Win10及以上系統默認已安裝Curl&#xff0c;打開命令提示符輸入 curl --help&#xff0c;若顯示幫助信息則無需安裝 ??手動安裝方法?? 官網下載&#xff1a;訪問 curl官網 選擇Windows版本curl for Windows若需在 Windows XP 等舊系統使用&#xff0c;需選擇更…

使用Redis實現實時排行榜

為了實現一個實時排行榜系統&#xff0c;我們可以使用Redis的有序集合&#xff08;ZSet&#xff09;&#xff0c;其底層通常是使用跳躍表實現的。有序集合允許我們按照分數&#xff08;score&#xff09;對成員&#xff08;member&#xff09;進行排序&#xff0c;因此非常適合…

Linux——firewalld防火墻(筆記)

目錄 一&#xff1a;Firewalld防火墻的概述 &#xff08;1&#xff09;firewalld簡介 &#xff08;2&#xff09;firewalld&iptables的關系 &#xff08;3&#xff09;firewalld與iptables service的區別 1. ?規則管理方式? 2. ?默認策略與設計邏輯? 3. ?配置文…

JS中實現類似sleep、wait、delay的延時功能

前言 編寫代碼時很多時候需要進行流程化的操作&#xff0c;各個流程間通常需要等待一定時間&#xff0c;這在很多語言中通常可以使用 sleep 、 wait 、 delay 等函數來實現。JavaScript原生并沒有類似的功能&#xff0c;想要延時通常就是使用 setTimeout(functionRef, delay) …

Elasticsearch:使用 ES|QL 進行搜索和過濾

本教程展示了 ES|QL 語法的示例。請參考 Query DSL 版本&#xff0c;以獲得等效的 Query DSL 語法示例。 這是一個使用 ES|QL 進行全文搜索和語義搜索基礎知識的實踐介紹。 有關 ES|QL 中所有搜索功能的概述&#xff0c;請參考《使用 ES|QL 進行搜索》。 在這個場景中&#x…

Java 動態代理實現

Java 動態代理實現 一、JDK動態代理二、CGLIB動態代理三、動態代理的應用場景四、JDK代理與CGLIB代理比較 動態代理是Java中一種強大的技術&#xff0c;它允許在運行時創建代理對象&#xff0c;用于攔截對目標對象的方法調用。 一、JDK動態代理 JDK動態代理是Java標準庫提供的代…

Apache IoTDB V2.0.2/V1.3.4 發布|新增表模型權限管理、UDF、嵌套查詢功能

Release Announcement Version 2.0.2/1.3.4 Apache IoTDB V2.0.2、V1.3.4 已經發布&#xff01; V2.0.2 作為樹表雙模型正式版本&#xff0c;主要新增表模型權限管理、用戶管理以及相關操作鑒權&#xff0c;并新增了表模型 UDF、系統表和嵌套查詢等功能。 V1.3.4 主要新增模式…

鴻蒙開發11-ARKUI框架

ARKUI&#xff08;方舟 UI 框架&#xff09;是 HarmonyOS Next&#xff08;原 OpenHarmony&#xff09;的核心 UI 開發框架&#xff0c;基于聲明式編程范式&#xff0c;支持 ArkTS 語言&#xff0c;能夠高效構建跨設備的響應式應用。以下是對 ARKUI 框架及開發的詳細介紹&#…

Linux 進程間通信詳解

一.進程間通信介紹 1. 進程間通信概念 進程間通信&#xff08;Inter-Process Communication, IPC&#xff09;是指在不同進程之間傳遞或交換信息的一種機制。在操作系統中&#xff0c;進程是資源分配和獨立運行的基本單位&#xff0c;它們擁有各自獨立的內存空間和系統資源。…

從0開始掌握動態規劃

動態規劃的核心思想 -- 以空間換時間 復雜點說通過分解問題為子問題并存儲子問題解來優化復雜計算的算法策略。 簡單看個問題。 一&#xff0c;初始&#xff1a;求最長連續遞增子序列 nums [10,9,2,5,3,7,101,18] 求上面數組中的最長連續遞增子序列&#xff0c;輸出其長度 …

Python Requests 庫:從安裝到精通

摘要 本文詳細介紹 Python Requests 庫的安裝與使用&#xff0c;通過常見示例讓你輕松掌握。 一、引言 在當今的互聯網時代&#xff0c;與各種 Web 服務進行交互是非常常見的需求。Python 作為一門功能強大且易于學習的編程語言&#xff0c;提供了許多用于網絡請求的庫&…

Manus技術架構、實現內幕及分布式智能體項目實戰

Manus技術架構、實現內幕及分布式智能體項目實戰 模塊一&#xff1a; 剖析Manus分布式多智能體全生命周期、九大核心模塊及MCP協議&#xff0c;構建低幻覺、高效且具備動態失敗處理能力的Manus系統。 模塊二&#xff1a; 解析Manus大模型Agent操作電腦的原理與關鍵API&#xf…

C算術運算符 printf輸出格式 字符指針打印輸出 使用scanf函數進行輸入

一 算術運算符 加, 一元取正 - 減, 一元取負 * 乘 / 除 % 求余 -- 自減1 自加1 邏輯運算符 && 邏輯與 || 邏輯或 ! 邏輯非 關系運算符 > 大于 > 大于等于 < 小于 < 小于等于 等于 ! 不等于 位運算符號 & 按位與 | 按位或 ^ 按位異或…

STM32中Hz和時間的轉換

目錄 一、常見的頻率單位及其轉換 二、計算公式 三、STM32中定時器的應用 四、例子 一、常見的頻率單位及其轉換 赫茲&#xff08;Hz&#xff09;是頻率的國際單位&#xff0c;表示每秒鐘周期性事件發生的次數。 1 kHz&#xff08;千赫茲&#xff09; 1,000 Hz1 MHz&#…

《分布式軟總線:不同頻段Wi-Fi環境下設備發現兼容性難題》

分布式軟總線技術作為實現設備互聯互通的關鍵&#xff0c;正逐漸成為構建萬物互聯世界的基石。然而&#xff0c;當分布式軟總線面臨不同頻段Wi-Fi環境時&#xff0c;設備發現的兼容性問題成為了阻礙其廣泛應用的一大挑戰。這一問題不僅影響著用戶體驗&#xff0c;也制約著分布式…

MCP(Model Context Protocol 模型上下文協議)科普

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;是由人工智能公司 Anthropic 于 2024年11月 推出的開放標準協議&#xff0c;旨在為大型語言模型&#xff08;LLM&#xff09;與外部數據源、工具及服務提供標準化連接&#xff0c;從而提升AI在實際…

【mongodb】數據庫操作

目錄 1. 查看所有數據庫2. 切換到指定數據庫&#xff08;若數據庫不存在&#xff0c;則創建&#xff09;3. 查看當前使用的數據庫4. 刪除當前數據庫5.默認數據庫 1. 查看所有數據庫 1.show dbs2.show databases 2. 切換到指定數據庫&#xff08;若數據庫不存在&#xff0c;則…

ICPR-2025 | 讓機器人在未知環境中 “聽懂” 指令精準導航!VLTNet:基于視覺語言推理的零樣本目標導航

作者&#xff1a;Congcong Wen, Yisiyuan Huang, Hao Huang ,Yanjia Huang, Shuaihang Yuan, YuHao, HuiLin and Yi Fang 單位&#xff1a;紐約大學阿布扎比分校具身人工智能與機器人實驗室&#xff0c;紐約大學阿布扎比分校人工智能與機器人中心&#xff0c;紐約大學坦登工程…