/**
* 讀取指定數量的單字
*
* @param max 最大讀取單字數,必須為正整數
* @param encoding 字元編碼,預設 UTF-8
* @return 實際讀取的單字列表
* @throws IOException 若檔案讀取失敗
*/
public List<String> readWords(int max, String encoding) throws IOException { ... }
/**
* @param <E> 列表元素類型
* @param list 待處理列表
* @param comparator 比較器,不可為 null
*/
public static <E> void sort(List<E> list, Comparator<? super E> comparator) { ... }
@param@param list 列表 → @param list 待排序的使用者列表,不可為 null| 格式 | 目標 | 範例 |
|---|---|---|
#method() | 同類別方法 | @see #getName() |
ClassName | 同套件/匯入類別 | @see StringBuilder |
pkg.ClassName | 完整限定類別 | @see java.util.Collections |
ClassName#field | 類別欄位 | @see Math#PI |
ClassName#method(paramTypes) | 特定多載方法 | @see Arrays#sort(int[]) |
ClassName#<init>(paramTypes) | 建構子 | @see ArrayList#<init>(int) |
package.name | 套件 | @see java.util.concurrent |
"外部文檔" | 任意文字連結 | @see "Effective Java 3rd Ed." |
<a href="...">標籤</a> | 外部 URL | @see <a href="https://openjdk.org">OpenJDK</a> |
/**
* @see #getName() 取得使用者顯示名稱
* @see java.util.Map#put(Object, Object) Map 放入鍵值對
*/
public void updateProfile(...) { ... }
產出文檔中將顯示「取得使用者顯示名稱」而非方法名,提升可讀性。
public interface Cache<K, V> {
/**
* 取得快取值
*
* @param key 快取鍵,不可為 null
* @return 對應值,不存在回傳 null
* @see #put(Object, Object)
* @see #evict(Object)
*/
V get(K key);
/**
* @deprecated 2.0 版起改用 {@link #calculateTax(Money, TaxRule)}
* @see #calculateTax(Money, TaxRule)
*/
@Deprecated
public BigDecimal calculateTax(double amount, String ruleCode) { ... }
/**
* 策略模式實作
* @see "GoF Design Patterns - Strategy"
* @see com.company.pattern.strategy.PaymentStrategy
*/
public class PaymentProcessor { ... }
@see 目標、重構時同步更新連結javadoc:javadoc 失敗於斷連結,CI 管道可強制檢查@param 是 API 契約的核心註釋,@see 則編織文檔之間的語義網絡。嚴謹撰寫兩者,配合現代 IDE 與 CI 工具,能將 JavaDoc 從「附屬品」昇級為「活的系統設計文檔」,大幅降低團隊溝通成本與新人上手門檻。