为什么在使用运行时时不需要导入java.lang



在下面的代码段中,为什么我需要导入java.awt.Robot但我可以使用Runtime而不导入java.lang.Runtime

package classes;
import java.awt.Robot;
public class RuntimeExecution {
    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("notepad");
            Robot robot = new Robot();
            robot.keyPress(65);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

因为

每个

编译单元隐式导入每个公共类型名称在预定义的包中声明java.lang,就好像声明一样 import java.lang.*;出现在每个编译单元的开头紧跟在任何包语句之后。结果,所有的名字这些类型在每个编译单元中都作为简单名称提供。

其中编译单元基本上是您的.java源文件。

为方便起见,Java 编译器会自动为每个源文件导入两个完整的包:

  1. java.lang 包和
  2. 当前包(包对于当前文件)。

请参考 oracle.com 了解更多信息(http://docs.oracle.com/javase/tutorial/java/package/usepkgs.html)

最新更新