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

标签 java javadoc java-9 java-platform-module-system java-module

Javadoc 工具根据可访问性修饰符生成文档。默认情况下,它记录所有 publicprotected 类、字段和方法。这可以通过以下 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/

相关文章:

java - org.aspectj.lang.NoAspectBoundException - 未找到方法 <init>()V

java - Mockito 未返回预期对象时

java - 如何查看 Java 10 Javadocs(在 Eclipse 中)

Eclipse - javadoc弹出窗口中的黑色背景

Java servlet 上下文根

java - Eclipse 中缺少基本的 JavaDoc

java - 反射访问在 IntelliJ IDEA 中的模块化(Java 9+)应用程序的测试中不起作用

maven - Jigsaw 项目与 Maven

java - 在 Java 9 中查询交换空间

java - 使用 Eclipse 项目中的 JDK