25

Javadoc 工具根据可访问性修饰符生成文档。默认情况下,它记录所有publicprotected、字段和方法。这可以通过以下选项进行更改:

-public
仅显示公共类和成员。

-protected
仅显示受保护的和公共的类和成员。这是默认设置。

-package
仅显示包、受保护和公共类和成员。

-private
显示所有类和成员。

Java 9 引入了模块的概念,Jigsaw 项目将其应用于现有的 JDK。Mark Reinhold 的一次演讲(关于模块的系列演讲中的第 3 次)展示了public修饰符现在如何具有不同级别的可访问性,具体取决于模块的可见性(通过exports):

  • 向所有人公开
  • 公开但仅限于特定模块
  • 仅在模块内公开

由于现在并非所有公共成员都可以访问,因此继续使用相同的 Javadoc 生成方案就没有什么意义了。只有暴露在“足够”级别的成员才应记录在案。

Javadoc 模块感知吗?除了上面的命令选项之外,是否还有命令选项来处理额外的曝光层?对于只暴露给特定模块的公共成员,Javadoc 是否列出了这些,如

public <module1, module2> static void getDefaultThing()

?

4

1 回答 1

17

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-*选项。

于 2017-01-31T00:18:36.807 回答