可能重复:
Java 导入混淆
当我阅读播放框架文档时,我发现了这一点。
import play.*;
import play.mvc.*;
在第一行本身,他们已经导入了 play 包下的所有类。那么第二行有什么用。检查此链接。转到“提供应用程序错误页面”部分。
如果我在进口概念上错了,请纠正我。
如果我在进口概念上错了,请纠正我。
你是。
像这样的东西:
import foo.bar.*;
仅从包中导入类型foo.bar
。它不会从“子包”中导入,例如foo.bar.baz
.
测试这个很容易:
import java.util.*;
class Test {
public void foo() {
Pattern p = null;
}
}
这不会编译,但如果你添加:
import java.util.regex.*;
那么它会的。
Java 并没有真正将包视为形成层次结构。作为人类,我们确实如此,但就 Java 语言而言,包java.util
和包java.util.regex
完全不相关。
第一行将导入同级别游戏中的所有类、枚举和接口。* 但没有子包。因此,您需要第二行。
它们是不同的包。Java中没有子包的概念。play.* 导入的类也可能在工作中。*。从 JVM 的角度来看,它们与 play.mvc.* 下的类无关。命名约定只是为了方便您了解这些包是相关的,而 play.mvc 可能在很大程度上依赖于 play。