Javadoc 如何处理 Java 9 中模块的可见性?

Javadoc 工具基于辅助功能修饰符生成文档。默认情况下,它记录所有类,字段和方法。这可以通过以下选项进行更改:publicprotected

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

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

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

-private
显示所有类和成员。

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

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

由于现在并非所有公共成员都可以访问,因此继续使用相同的Javadoc生成方案将不太有意义。只应记录以“足够”级别公开的成员。

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

public <module1, module2> static void getDefaultThing()

?


答案 1

javadoc 具有新的选项,允许您选择在模块、包、类型和成员级别记录哪些项目。使用 EA 版本的 JDK 9,查找新的 、选项和选项。--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 的用户生成文档,并可能使用或为 API 开发人员生成文档。要进行更细粒度的控制,请使用基础选项。-package-private--show-*


答案 2

推荐