java - 模糊的 Java 导入语法?

标签 java syntax import

<分区>

我在查看 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 格式自动消除了导入声明的所有 .* 部分。

关于java - 模糊的 Java 导入语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14618173/

相关文章:

Java Swing GridBagLayout - 添加没有空格的按钮

function - 在lua中调用函数时使用多个括号

ruby - 你怎么说不等于在 Ruby 中?

java - 在您的域中使用 Google 应用程序

java - addView 添加 View 但没有显示它

java - 双重检查锁定 - 它在 Java 中到底有效吗?

java - 获取特殊数字列表的算法

java - 当每行都可以抛出时避免多次 try catch

Typescript - 导入第三方模块 - 名称自动完成 VSCode

python - 在 Python 的同一文件中导入类