Javadoc 工具根据可访问性修饰符生成文档。默认情况下,它记录所有 public
和 protected
类、字段和方法。这可以通过以下 options 进行更改:
-public
Shows only public classes and members.-protected
Shows only protected and public classes and members. This is the default.-package
Shows only package, protected, and public classes and members.-private
Shows all classes and members.
Java 9 引入了模块的概念,Jigsaw 项目将其应用于现有的 JDK。一个 talk Mark Reinhold (关于模块的系列讨论中的第 3 篇)展示了 public
修饰符现在如何具有不同级别的可访问性,具体取决于模块的可见性(通过 exports
) :
- public to everyone
- public but only to specific modules
- public only within a module
由于现在并非所有公共(public)成员都可以访问,因此继续使用相同的 Javadoc 生成方案就没那么有意义了。只有暴露在“足够”级别的成员才应记录在案。
Javadoc 模块可以识别吗?除了上面的命令选项之外,是否还有命令选项来处理额外的曝光层?对于只暴露给特定模块的公共(public)成员,Javadoc 是否列出了这些,如
public <module1, module2> static void getDefaultThing()
?
最佳答案
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 的开发者生成文档API。如需更细粒度的控制,请使用底层的 --show-
选项。
关于java - Javadoc 如何处理 Java 9 中模块的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929425/