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

Javadoc如何处理Java9中模块的可见性?,java,javadoc,java-9,java-platform-module-system,java-module,Java,Javadoc,Java 9,Java Platform Module System,Java Module,Javadoc工具根据可访问性修饰符生成文档。默认情况下,它记录所有public和protected类、字段和方法。这可以通过以下方式进行更改: -公共 仅显示公共类和成员 -受保护的 仅显示受保护的和公共的类和成员。这是默认设置 -包装 仅显示包、受保护和公共类及成员 -私人 显示所有类和成员 Java9引入了模块的概念,而ProjectJigsaw将其应用于现有的JDK。Mark Reinhold(关于模块的系列讲座中的第三篇)介绍了public修饰符现在如何根据模块的可见性(通过导出)具有

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

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

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

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

-私人
显示所有类和成员

Java9引入了模块的概念,而ProjectJigsaw将其应用于现有的JDK。Mark Reinhold(关于模块的系列讲座中的第三篇)介绍了
public
修饰符现在如何根据模块的可见性(通过
导出
)具有不同的可访问性级别:

  • 公之于众
  • 公共但仅限于特定模块
  • 仅在模块内公开
因为现在不是所有的公共成员都可以访问,所以继续使用相同的Javadoc生成方案就没有什么意义了。仅应记录暴露在“足够”水平的构件

Javadoc模块知道吗?除了上面的命令选项之外,还有其他命令选项来处理额外的曝光层吗?对于只向特定模块公开的公共成员,Javadoc是否列出了这些,如中所示

public <module1, module2> static void getDefaultThing()
publicstaticvoid getDefaultThing()

javadoc有新的选项,允许您选择在模块、包、类型和成员级别记录哪些项目。使用JDK 9的EA版本,查找新的
--module
--show-*
选项和
--expand requires
选项

现有选项
-public
-protected
-package
-private
已根据新的
--show-*
选项重新定义,但其命令行帮助仍需更新

方便的dandy转换表是:

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

有趣的问题,尤其是因为javadoc的目的可能既面向内部(例如库/模块的开发人员),也面向公开(例如库/模块的用户)。@MarkRotteveel Yes。如果它只针对库/模块的用户,我认为只会显示“PublicforEveryone”,因为用户的模块在库编译时不可能被知道。不确定它对受保护的意味着什么。似乎javadoc以某种方式配备了一些模块文档(我没有尝试过任何一个)
javadoc--help | grep模块
显示了一些选项。根据我对这些可能的命令的理解,有两种类型的文档-通常的和/或模块。我可能完全错了。。。这的确是一个很好的问题。如果产出会发生变化,它将如何变化?Javadoc中是否会记录不同级别的
public