为什么有些Java代码再次导入相同的包?
可能重复:为什么有些Java代码再次导入相同的包?,java,import,playframework,Java,Import,Playframework,可能重复: 当我阅读play Framework文档时,我发现了这一点 import play.*; import play.mvc.*; 在第一行中,他们已经导入了play包下的所有类。那么第二行有什么用呢。看看这个。转到“提供应用程序错误页”部分 如果我的概念错了,请纠正我 import play.*; 将导入其中的所有类型;除了那些在子包内的 import play.mvc.*; 将导入mvc包中的所有类型,它是play中的子pckage 您会发现这个答案也很有用: 如果我的概
当我阅读play Framework文档时,我发现了这一点
import play.*;
import play.mvc.*;
在第一行中,他们已经导入了play包下的所有类。那么第二行有什么用呢。看看这个。转到“提供应用程序错误页”部分
如果我的概念错了,请纠正我
import play.*;
将导入其中的所有类型;除了那些在子包内的
import play.mvc.*;
将导入mvc
包中的所有类型,它是play
中的子pckage
您会发现这个答案也很有用:
如果我的概念错了,请纠正我
import 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。谢谢大家。为我没有专注于基本的事情而感到羞耻。Eclipse对此负责。