【发布时间】:2017-06-15 05:27:55
【问题描述】:
Javadoc 工具根据可访问性修饰符生成文档。默认情况下,它记录所有public 和protected 类、字段和方法。这可以通过以下options 进行更改:
-公开
仅显示公共类和成员。-受保护
仅显示受保护的和公共的类和成员。这是默认设置。-包装
仅显示包、受保护和公共类和成员。-私人
显示所有类和成员。
Java 9 引入了模块的概念,Jigsaw 项目将其应用于现有的 JDK。 Mark Reinhold 的 talk(关于模块的系列讨论中的第 3 次)展示了 public 修饰符现在如何具有不同级别的可访问性,具体取决于模块的可见性(通过 exports):
- 对所有人公开
- 公开,但仅限于特定模块
- 仅在模块内公开
由于现在并非所有公共成员都可以访问,因此继续使用相同的 Javadoc 生成方案就没那么有意义了。只有暴露在“足够”级别的成员才应记录在案。
Javadoc 模块可以识别吗?除了上面的命令选项之外,是否还有命令选项来处理额外的曝光层?对于只暴露给特定模块的公共成员,Javadoc 是否列出了这些,如
public <module1, module2> static void getDefaultThing()
?
【问题讨论】:
-
有趣的问题,尤其是 javadoc 的目的可能既面向内部(例如库/模块的开发人员),也可能面向公众(例如库/模块的用户)。
-
@MarkRotteveel 是的。如果它仅针对库/模块的用户,我认为只会显示“对所有人公开”,因为在库编译期间无法知道用户的模块。不知道这对
protected意味着什么。 -
似乎 javadoc 以某种方式配备了 some 模块文档(我没有尝试过任何一个)。
javadoc --help | grep module表示有一些选项。根据我对这些可能的命令的理解,不知何故有两种类型的文档——通常的一种和/或模块。我可能完全错了……确实是个好问题。
标签: java javadoc java-9 java-platform-module-system java-module