当我想知道如何使用某个类时,我会查看它的Javadoc。例如,考虑LocalTime。我只看到该类的静态字段的文档,MAX等等。我没有看到我期望它具有的字段,例如second和nano,基于像int getSecond()和int getNano()这样的方法。为什么这些字段没有文档化?为什么我只能通过阅读源代码来了解它们?
MAX
second
nano
int getSecond()
int getNano()
yizd12fk1#
但是,你实际上并不知道它是否有一个second或nano字段。仅仅因为它有像int getMinute()这样的方法并不意味着有一个int minute字段。封装的一部分是,你通过它们的 public API(这 * 是 * 文档化的)而不是通过实现细节与类交互。我可以像这样实现int getMinute()方法:
int getMinute()
int minute
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字段和方法。但是,这些对大多数用户来说并不是那么有用,因为他们可能无法 * 调用 * 这些方法或 * 访问 * 这些字段,除非他们使用一些反射方法。至于LocalTime的源代码,有开源的Java实现,您可以在那里查看源代码。
private
gwbalxhn2#
Java文档是记录公共字段和方法。由于这些字段是private,因此没有记录。由于用户无法访问private字段或方法,因此它们通常不包含在Java文档中。这些字段有getter方法,你可以在java文档中找到。Java文档是为了帮助用户找到他们用例的公共方法/字段。因此,你在java文档中找不到nano和second。
2条答案
按热度按时间yizd12fk1#
但是,你实际上并不知道它是否有一个
second
或nano
字段。仅仅因为它有像int getMinute()
这样的方法并不意味着有一个int minute
字段。封装的一部分是,你通过它们的 public API(这 * 是 * 文档化的)而不是通过实现细节与类交互。我可以像这样实现
int getMinute()
方法:或通过
它们可能都是一致的实现。它们不会是很好的实现,但它们会有相同的 public API。公共文档的重点是你不需要知道实现的细节。
现在,如果你正在为自己的代码生成Javadoc,你实际上可以指示Javadoc为可见性级别较低的字段生成文档,比如
private
字段和方法。但是,这些对大多数用户来说并不是那么有用,因为他们可能无法 * 调用 * 这些方法或 * 访问 * 这些字段,除非他们使用一些反射方法。至于LocalTime的源代码,有开源的Java实现,您可以在那里查看源代码。
gwbalxhn2#
Java文档是记录公共字段和方法。由于这些字段是
private
,因此没有记录。由于用户无法访问private
字段或方法,因此它们通常不包含在Java文档中。这些字段有getter方法,你可以在java文档中找到。Java文档是为了帮助用户找到他们用例的公共方法/字段。因此,你在java文档中找不到
nano
和second
。