0

a.java 已导入 java.io.*;我把所有的java都拖到了项目中,但有些以红色图标结束,而a.java以黄色结束。那些有红色的没有进口,就像没有进口一样,但这就是我把 a.java 放在那里的原因。为什么它不起作用?

4

2 回答 2

1

导入的范围是它所在的 .java 文件。也就是说,在 a.java 中导入一些东西对 b.java 完全没有影响。

“import”关键字实际上有一个有点不幸的名字。刚接触 Java 的人通常认为它以某种方式“引入”。它真正做的只是给你一个速记来引用另一个包中的东西。例如,您可以在任何需要该类的地方编写“java.io.File”,而不是导入它并将其称为“File”。无论您使用导入我们的完全限定名称,编译后的代码最终都会完全相同。

于 2012-04-12T06:43:14.950 回答
0

仅仅因为A.java拥有import java.io.*;它并不意味着可以B.java访问java.io.*;. B.java即使它们在同一个包中,也必须明确导入它想要使用的东西。这在 JLS 的§6.3§7.5中有规定。

从第 6.3 节开始:

导入声明使类型或成员仅在实际包含导入声明的编译单元中通过其简单名称可用。导入声明引入的类型或成员的范围具体不包括包声明的 PackageName、当前编译单元中的其他导入声明或同一包中的其他编译单元。

于 2012-04-12T07:02:02.073 回答