【发布时间】:2018-01-22 10:34:17
【问题描述】:
我试图了解 Java 包的一般层次结构。
如果你查阅这个Oracle page,似乎有3个主要包:
java、javax 和 org。
Java 平台 7 中的所有包都以这三个之一开头。
这些是更大包装的一部分吗?
我很想看到一棵完整的树,但是 Oracle 提供的树非常令人困惑,因为它太详细了。
我不明白的另一件事是为什么像“java.awt”和“java.awt.color”,或“java.lang”和“java.lang.annotation”这样的包被Oracle放在同一级别.
我确实在网上读到,如果您导入“父包”,则不会从“子包”中导入任何类,这是有道理的。但是,很难认为 java.awt 和 java.awt.color 之间没有关系;似乎很直观,至少包含在 fromer 中。
所以,根据我目前的理解,我会画一棵看起来像这样的树:
【问题讨论】:
-
“但是,很难认为 java.lang 和 java.lang.color 之间没有关系” - 就语言而言确实没有关系。唯一的等级制度是由人类理解强加的。
-
@JonSkeet 我不明白你想给我什么建议:(
-
@GabrieleScarlatti 这种关系在意图之内,而不是在语言之内。
java.awt的开发人员需要颜色表示,因此他们为 awt 编写了一个包colors。因此,他们将color作为子包放在java.awt中。 -
我想说的是,不管你是否很难想象,就语言而言,不同的包之间确实没有关系。
-
阅读相关问题:stackoverflow.com/questions/727844/javax-vs-java-package。另请参阅 Java9 模块依赖结构,因为它与 jdk 包相关:dzone.com/articles/java-9-modularity-jigsaw