2017-01-30 64 views
22

Javadoc工具根據可訪問性修改器生成文檔。默認情況下,它記錄所有publicprotected類,字段和方法。這可以通過以下options改變:Javadoc如何處理Java 9中模塊的可見性?

-public
只顯示公共類和成員。

-protected
只顯示受保護的公共類和成員。這是默認設置。

-package
只顯示包,保護和公共類和成員。

-private
顯示所有類和成員。

Java 9引入了模塊的概念,項目Jigsaw將它應用於現有的JDK。一個talk馬克萊因霍爾德(在一系列有關模塊會談3日)表示public修改現在怎麼都有不同程度的可及性,根據模塊的可見性(通過exports):

  • 公開給大家
  • 公開,但只對特定的模塊
  • 公衆只能在模塊

由於現在還沒有所有的公衆成員都可以訪問,但繼續使用相同的Javadoc生成方案會更不合理。只有暴露於「足夠」水平的成員才應形成文件。

是否支持Javadoc模塊?除了上面的命令選項以外,還有其他命令選項可用於處理額外曝光層嗎?對於僅暴露於特定模塊的公衆成員,Javadoc列出了這些內容,如

public <module1, module2> static void getDefaultThing() 

+4

有趣的問題,尤其是作爲javadoc的目的可能都是面向內部(例如圖書館/模塊的開發者),但也公開(例如圖書館/模塊的用戶)。 –

+0

@MarkRotteveel是的。如果僅針對圖書館/模塊的用戶,我認爲*由於用戶的模塊在圖書館編譯期間無法知道,因此只會顯示「爲所有人提供的公共」。不知道這對於'protected'意味着什麼。 – user1803551

+1

似乎javadoc是以某種方式配備了* some *模塊文檔(我還沒有嘗試過其中的任何一種)。 'javadoc --help | grep模塊顯示有一些選項。根據我對這些可能的命令的理解,有兩種類型的文檔 - 通常的文檔和/或模塊。我可能是完全錯誤的......非常好的問題。 – Eugene

回答

13

javadoc提供了新的選項,允許您選擇在模塊,包,類型和成員級別記錄哪些項目。使用JDK 9的EA版本,查找新的--module,--show-*選項和--expand-requires選項。

現有選項-public-protected-package-private選項已被重新定義的新--show-*選擇方面,雖然他們的命令行幫助,仍然需要更新。

的方便,花花公子轉換表:

-public 
     --show-module-contents api --show-packages exported --show-types public --show-members public 

-protected (the long-standing default) 
     --show-module-contents api --show-packages exported --show-types protected --show-members protected 

-package 
     --show-module-contents all --show-packages all --show-types package --show-members package 

-private 
     --show-module-contents all --show-packages all --show-types private --show-members private 

在一般情況下,繼續使用默認的API的用戶生成文檔,也許使用-package-private,爲的開發人員生成文檔API。要進行更細粒度的控制,請使用底層的--show-*選項。

+0

如果會出現輸出如何變化?在Javadoc中會注意到不同級別的「公共」嗎? – user1803551