【问题标题】:Why java packages do not work as a hierarchy? [closed]为什么 java 包不能作为层次结构工作? [关闭]
【发布时间】:2017-02-01 07:03:51
【问题描述】:

为什么 java 不允许访问父包中的包限制类型?

类似的东西:

Package a
|--Class A
|--Package b
   |--Class B

如果类 A 具有包可见性,则无法从类 B 访问类 A。我认为这是有道理的,但显然不是。

这是什么原因?

【问题讨论】:

  • 因为 Java 访问修饰符就是 specified to work。像你期望的那样有意义吗?可能;但事实并非如此。
  • JLS 明确指出:“包的分层命名结构旨在方便以常规方式组织相关包,但除了禁止包含子包的包外,其本身没有任何意义具有与该包中声明的顶级类型(第 7.6 节)相同的简单名称。”任何试图辨别为什么该陈述存在的答案更有可能是猜测而不是具体事实。
  • 来吧,停在-1,我在问为什么java是这样构想的。
  • “我问的是 java 是不是这样设计的” 你得问问 James Gosling 等人。我们只能猜测。

标签: java packages


【解决方案1】:

没有父包或子包之类的东西。包不是分层的东西。每个包都是独立的。遵循分层命名模式的包也分层存储在分层文件系统中,这只是惯例。

来自JLS Sec 7.1

包的分层命名结构旨在方便以常规方式组织相关包,但除了禁止包具有与顶级类型相同的简单名称的子包( §7.6) 在该包中声明。

例如,一个名为oliver 的包与另一个名为oliver.twist 的包之间或名为evelyn.woodevelyn.waugh 的包之间没有特殊的访问关系。也就是说,名为oliver.twist 的包中的代码对oliver 中声明的类型的访问没有比任何其他包中的代码更好的了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2023-04-06
    • 2012-11-09
    • 2015-03-19
    • 2023-03-21
    相关资源
    最近更新 更多