<分区>
我在查看 some source code 时遇到了晦涩的 import
语法来自 Sun 的 JVM 实现。
import java.awt;
从源代码来看,这个import
语句似乎是导入整个java.awt
包,但标准是使用包通配符:导入 java.awt.*;
。但是,ComponentFactory
中的import
语句的语法是无效的,不能用 JDK 或 Eclipse 编译。
为什么 Java 开发人员会使用这种不可编译的语法,而不是正确的 .*
语法? (也许开发人员使用了支持这种语法的不同编译器?)
看过最新的JLS (http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.5.1) ,它说:
Example 7.5.1-3. No Import of a Subpackage
Note that an import statement cannot import a subpackage, only a type.
For example, it does not work to try to import java.util and then use
the name util.Random to refer to the type java.util.Random:
import java.util; // incorrect: compile-time error
class Test { util.Random generator; }
语言设计者没有理由使用不同版本的 Java。他们可能有一些用于编码和测试的 secret 工具,他们也可能会测试一些新功能(但我不认为这是一个新功能,因为新功能不应该在没有任何描述的情况下就这样发布)
我相信是 HTML 格式自动消除了导入声明的所有 .*
部分。