gpt4 book ai didi

java - LongAdder 扩展了哪个类?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:48 26 4
gpt4 key购买 nike

在为 LongAdder 引用 JavaDocs 时,它扩展了 Number 类。

Java docs LongAdder

然后在查看源代码时,它是从 Striped64

扩展而来的

LongAdder source code

这让我很困惑,为什么我们不能在 javadocs 中指定 LongAdder extending from Striped64 class ?是因为 Striped64 扩展了 Number 吗?

最佳答案

Which class does LongAdder extends?

如源代码所示,它扩展了 Striped64。但是,由于该类不是公共(public) API,因此 Javadoc 不会告诉您。


默认情况下,Javadoc 只为publicprotected 成员生成文档;换句话说,只有公共(public) API 被记录1Striped64 类是包私有(private)的,因此没有记录。由于该类未记录,因此会找到下一个最近的记录祖先,在本例中恰好是 Number。请注意,您可能有一个记录类 Foo,它有 15 个以上的祖先,但如果这些祖先都不是公共(public) API,Javadoc 将显示 Foo extends Object

从公共(public) API 与私有(private) API 的角度来看,LongAdder 扩展 Striped64 这一事实是无关紧要的。后一类是实现细节(即私有(private) API)。它是定义库契约的公共(public) API;因此,在这种情况下,用户只关心 LongAdderNumber 的子类。

如果需要,您可以配置 Javadoc 来记录所有内容,包括包私有(private)和 private 成员。但是,生成的文档可能只能供私有(private)使用(例如,供维护库的组织内部使用)。


1。使 API 公开或私有(private)的原因不仅仅基于可见性修饰符。该类位于哪个包中也是相关的。例如,JDK 中有许多包中的类,其前缀为com.sunoraclejdk.internal 等。这些包中的类是私有(private) API,因此未记录在公开可用的 Javadoc 中。

随着模块的出现,“私有(private)包”的概念在 Java 9 中获得了更多的正式地位。现在您可以显式声明模块导出哪些包,这是由运行时强制执行的。

关于java - LongAdder 扩展了哪个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56945073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com