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

时间:2017-01-30 05:18:35

标签: java javadoc java-9 jigsaw java-module

Javadoc工具基于辅助功能修饰符生成文档。默认情况下,它会记录所有publicprotected类,字段和方法。可以使用以下options更改此内容:

  

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

     

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

     

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

     

- 私人
  显示所有类和成员。

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

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

由于现在并非所有公共成员都可以访问,因此继续使用相同的Javadoc生成方案将没有多大意义。只有那些暴露出足够的"水平应记录在案。

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

public <module1, module2> static void getDefaultThing()

1 个答案:

答案 0 :(得分:14)

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用户生成文档,并使用-package-private为API开发人员生成文档。要获得更精细的控制,请使用基础--show-*选项。