【发布时间】:2018-05-19 04:42:39
【问题描述】:
在 Boyarsky 和 Selikoff 的《OCA Oracle Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0-808》一书中,我在第一章的复习考试中遇到了一个令人困惑的问题:
14.给定文件 /my/directory/named/A/Bird.java 中的以下类:
INSERT CODE HERE
public class Bird { }
如果我们从 /my/directory 编译,以下哪个替换 INSERT CODE HERE ? (选择所有适用项)
答. package my.directory.named.a;
B. package my.directory.named.A;
C. package named.a;
D. package named.A;
E. package a;
F. package A;
G. Does not compile
本书指出正确答案只是 D。(我们将忽略他们写了“选择所有适用的”这一事实,尽管在本书的前面曾声明他们只会在有超过 1 个答案的情况下这样做),附上解释:
D.包名代表当前路径下的所有文件夹,即 在这种情况下命名为.A。选项 B 不正确,因为包名区分大小写, 就像变量名和其他标识符一样。
我在各个层面都对此感到困惑:
我尝试使用
javac /named/A/Bird.java编译 /my/directory 中的文件,并且代码可以使用上述任何答案成功编译。此外,无论我在类的第一行package之后写什么,代码都会编译。-
假设我完全错过了(不是双关语)第 1 点中的要点,而这不是我们从 /my/directory 编译的方式,那么我有以下问题:
我们如何从 /my/directory 编译?
为什么选项 B. 不正确?显然,他们为 B. 提供的解释毫无意义。
有人能解释一下这个问题吗?
【问题讨论】:
-
好吧,既然没有人对这里感兴趣......
标签: java compilation directory package