【发布时间】:2012-07-17 05:35:10
【问题描述】:
最初我在类路径的 jar 中有一个 java.io.File 类,它没有 separatorChar 属性。所以我遇到了以下代码块运行的问题:
import java.io.File;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("separatorChar= " + File.separatorChar);
}
}
但是我把import语句改成如下:
import java.io.*;
然后我收到一个错误,基本上说明找不到 File.separatorChar。
我认为正在发生的事情是 import java.io.* 正在使用类路径中的 jar 中的类,而 import java.io.File 专门使用 Java 附带的 File 类。
这里的问题是为什么 import java.io.File 有效而 java.io.* 无效?
【问题讨论】:
-
当前包中必须有另一个名为 File 的类。
-
@EJP,这似乎是问题所在。但是,JVM 搜索类的方式肯定有一些细微差别,因为使用 import java.io.File,使用了正确的类,而 import java.io.*,使用了不同的类。
-
没错。 Import java.io.* 为编译器提供了另一个位置来查找不在当前包中的类。 Import java.io.File 告诉编译器使用哪个 File。道德:不要重复使用 JDK 类名。