当我想知道如何使用某个类时,我会查看它的Javadoc。例如,考虑LocalTime。我只看到该类的静态字段的文档,
MAX
,等等。我没有看到我期望它具有的字段,例如 second
和 nano
,基于像 int getSecond()
和 int getNano()
这样的方法。为什么没有记录这些字段?为什么我只能通过阅读源码才能了解它们?
不过,您实际上并不知道它是否具有
second
或 nano
字段。仅仅因为它有像 int getMinute()
这样的方法并不意味着有一个 int minute
字段。封装的一部分是您通过它们的 public API(已记录)而不是通过实现细节与类进行交互。
我可以像这样实现int getMinute()
方法:
class LocalTime {
private int negativeMinutes;
// ...
public int getMinutes() {
return -1 * negativeMinutes;
}
}
或通过
class LocalTime {
private String minutes;
// ...
public int getMinutes() {
return Integer.valueOf(minutes);
}
}
那些都可以是符合规范的实现。它们不会是很好的实现,但它们具有相同的public API。公共文档的要点是你不需要知道实现细节。
现在,如果您要为自己的代码生成 Javadoc,您实际上可以指示 Javadoc 为可见性级别较低的字段生成文档,例如private
字段和方法。但是,这些对大多数用户来说并不是那么有用,因为他们可能无法call 那些方法或 access 那些字段,除非他们使用一些反射方法。 LocalTime的源码,有开源的Java实现,你可以去那里看源码
private
,因此没有记录。由于用户无法访问
private
字段或方法,因此它们通常不包含在 java 文档中。这些字段有getter方法,你可以找到java文档。 Java 文档旨在帮助用户找到其用例的公共方法/字段。因此,您在 java 文档中找不到
nano
和
second
。