首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JLS第7章中“包的可观察性”的含义是什么?

JLS第7章中“包的可观察性”的含义是什么?
EN

Stack Overflow用户
提问于 2014-04-12 16:14:26
回答 2查看 276关注 0票数 2

我正在学习Java语言规范,我对"Observability of a Package"JLS§7.4.3 -包的可观测性中的意义有一个问题

一个包是可观察的当且仅当:

  • 包含包声明的汇编单元是可观察的(第7.3节)。
  • 包的子包是可观察的。

我的问题是

  1. 如何理解包的可观察性
  2. 如何理解第二个条件A subpackage of the package is observable
EN

回答 2

Stack Overflow用户

发布于 2015-08-08 12:34:07

JLS中有四个概念,准确地说是很好的:

( 1)编译单元是可观测的;2)编译单元总是可观测的;3)包是可观测的,4)包总是可观测的

( 1)假设编译单元"A“是可观察的。这意味着Java编译器可以找到这个编译单元并解析/编译其内容。

2)如果任何独立于其属性的编译过程都能找到并解析/编译该编译单元,则编译单元始终是可观察的。通常编译单元都是由Java实现者提供的,这些单元总是可以观察到的。

( 3)包是可观测的当且仅当该包至少有一个可观测的编译单元或至少有一个可观测的子包。另外,我想指出的是,包仍然可以包含无法观察到的编译单元或子包。

4)包总是可观测的当且仅当该包中至少有一个编译单元总是可观测的,或者至少有一个始终可观测的子包。通常,总是可观察的子包由Java实现者提供。另外,我想指出的是,包仍然可以包含无法观察到的编译单元或子包。

票数 1
EN

Stack Overflow用户

发布于 2015-08-08 14:36:13

这是我先前的答覆的延续。

让我们考虑上述四个概念如何与Oracle的"Java 8“的实现相关。

首先,编译单元是简单的文件,包是本地文件系统的文件夹。

( 1)我们如何使特定的汇编单元在特别是遵守情况下可以观察到?为此,我们使用并枚举编译,并将它们与空格分隔开来。

例如,如果当前文件夹为D:\fo1\Foo2 2,则编写

javac com\my1\MyClass1.java com\my2\MyClass2.java

我们编译了两个编译代码:d:\Foo1 1\Foo1 2\com\my1\MyClass1.java D:\Foo1 1\Foo1 2\com\myC.2\MyClass2.java

此外,我们还可以使用以下选项修改编译: 1) javac编译器的"-sourcepath“选项。2) javac编译器的"-classpath“或"-cp”选项。3) "CLASSPATH“环境变量。

有关更多详细信息,请参阅http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html

另外,我想指出的是,"-sourcepath“只搜索编译单元,但是"-classpath”(或-cp)和“CLASSPATH”不仅可以搜索编译单元,还可以搜索编译Java类(*.class文件),这些类可以随意地捆绑在jar/zip文件中。这些编译类现在不是编译单元,而是编译前的编译单元。我们可以将它们视为“修改”编译单元或以前执行某些过程的编译单元。因此,通过上述三个选项,我们可以在特定编译中添加更多的编译单元。

2)始终可以观察到的编译单元与"Java 8“的安装捆绑在一起,并位于"...\jdk1.8.0_51\jre\lib”中。它们中的大多数都被放置在众所周知的"rt.jar“中。但是放在其他jars中的编译单元也总是可以观察到的。如您所见,它们被打包成jar文件中的编译类文件,因此它们是“修改”的编译单元。

3)如果你浏览一下"...\jdk1.8.0_51\jre\lib“,你会发现很多经常可以观察到的软件包:

java -根据规范总是可以观察到的

java.lang -根据规范总是可以观察到的

java.io -根据规范总是可以观察到的

java.applet

java.awt

java.beans

java.math

java.net

java.nio

java.rmi

java.security

java.sql

java.text

java.time

java.util

.

此外,你也可以把你自己的小伙伴放到"...\jdk1.8.0_51\jre\lib\ext“里,这样你就可以观察到你的小人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23032904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档