可能重复:
Java import confusion
当我阅读play frameworks文档时,我发现了这一点。
import play.*;
import play.mvc.*;
在第一行本身,他们已经导入了play包下的所有类。那么第二行的用途是什么。检查此link。转到“提供应用程序错误页面”部分。
如果我在进口概念上出错了,请纠正我。
答案 0 :(得分:18)
如果我在进口概念上出错了,请纠正我。
你是。
这样的事情:
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
完全不相关。
答案 1 :(得分:2)
import play.*;
将导入所有类型;除了子包内的那些。
import play.mvc.*;
将导入mvc
包中的所有类型,即play
内的子广告。
您会发现此答案也很有用:Java import confusion
答案 2 :(得分:1)
第一行将导入相同级别的所有类,枚举和接口。*但没有子包。因此,您需要第二行。
答案 3 :(得分:0)
它们是不同的包装。 Java中没有子包的概念。由play。*导入的类可能也在工作中。*。从JVM的角度来看,它们与play.mvc。*下的类无关。命名约定只是方便你知道包是相关的,play.mvc可能很大程度上取决于游戏。