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

Gug*_*gan 8 java import playframework

可能重复:
Java导入混乱

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

import play.*;
import play.mvc.*; 
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*eet 18

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

你是.

像这样的东西:

import foo.bar.*;
Run Code Online (Sandbox Code Playgroud)

仅从foo.bar包中导入类型.它不会从"子包"导入,例如foo.bar.baz.

测试这个很容易:

import java.util.*;

class Test {
    public void foo() {
        Pattern p = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

那将无法编译,但如果你添加:

import java.util.regex.*;
Run Code Online (Sandbox Code Playgroud)

然后它会.

Java并不认为包形成层次结构.作为人类,我们这样做,但就Java语言而言,包java.utiljava.util.regex完全无关.