Java 模块术语表

Dor*_*dus 5 java java-9 java-module

Java 模块规范中使用的所有这些术语有什么区别?我找不到这些术语的定义,它不循环引用自身。

  • 可见的
  • 可观察的
  • 无障碍

规范做出了这样的陈述,但我还没有弄清楚这些词的实际含义

具体来说,主机系统必须将原本可观察的普通编译单元限制为仅对 M 可见的编译单元。

JLS 11第 7.3 节,第 183 页)

Ste*_*ann 5

首先,在 JLS 中,可见性等术语在应用于编译单元、包或类型时可能具有不同的含义。

\n\n

JLS 中定义术语的一些参考文献:

\n\n
    \n
  • 可观察到

    \n\n
      \n
    • 编译单元:\xc2\xa77.3,句子开头“主机系统确定哪些编译单元是可观察的”

    • \n
    • 包:\xc2\xa77.4.3,第一段。

    • \n
    • 直觉:参与编译的元素。

    • \n
  • \n
  • 可见的

    \n\n
      \n
    • 编译单元:\xc2\xa77.3,句子开头“M可见的普通编译单元”开头- 请注意,可见性是相对于模块定义的

    • \n
    • 包:\xc2\xa77.4.3,以“包对模块 M 可见”开头的句子- 再次相对于模块。

    • \n
    • 直觉:从给定模块的角度考虑requires和可观察到的元素exports

    • \n
  • \n
  • 无障碍

    \n\n
  • \n
\n\n

此外,自 JLS 9 以来的核心新概念是“唯一可见”(\xc2\xa77.4.3),以及术语“潜在可访问”、“读取”/“读取者”、“关联于”。从历史上看,JLS 9 对“技术上可观察”和“真正可观察”进行了进一步区分,该区分从 JLS 11 开始已被删除。

\n\n

此外,从历史上看(直到 JLS 8),“可见”曾用于定义阴影 ( \xc2\xa76.4.1 ),但这种用法已在 JLS 9 中撤回。

\n\n

最后请注意,其中一些概念(显式或隐式)从java.lang.module.

\n\n

我建议将这些术语视为技术术语,而不是为了吸引更广泛受众的直觉,部分原因是 JLS 中的许多定义都是关于“编译单元”的,而这对于直观理解来说并不是必需的。有关可能的直观理解与基于 JLS 的理解的比较,请参阅JDT 的幻灯片 #20 包含 Java\xe2\x84\xa2 9 - 内部人士的观点

\n