为什么有些Java代码会再次导入相同的包?

时间:2012-12-06 07:24:13

标签: java import playframework

  

可能重复:
  Java import confusion

当我阅读play frameworks文档时,我发现了这一点。

import play.*;
import play.mvc.*; 

在第一行本身,他们已经导入了play包下的所有类。那么第二行的用途是什么。检查此link。转到“提供应用程序错误页面”部分。

如果我在进口概念上出错了,请纠正我。

4 个答案:

答案 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.utiljava.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可能很大程度上取决于游戏。