Java中的import命令
以下命令之间的具体区别是什么:Java中的import命令,java,import,Java,Import,以下命令之间的具体区别是什么: import javax.swing.JPanel; 及 若我使用第二个,编译器将从swing导入所有文件,或者只导入所需的文件,可执行文件的大小是否会有差异?提前感谢第一个将导入该特定包,但第二个将导入swing中的所有包。第一个会更小,因为它只有一个包。第一个只导入 第二个导入中存在的所有类,不包括其子包中的类,例如javax.swing.event包中的类等 import关键字不会直接导入给定的类。它基本上只是将编译器指向类路径中的类,以便能够定位依赖类,
import javax.swing.JPanel;
及
若我使用第二个,编译器将从swing导入所有文件,或者只导入所需的文件,可执行文件的大小是否会有差异?提前感谢第一个将导入该特定包,但第二个将导入swing中的所有包。第一个会更小,因为它只有一个包。第一个只导入 第二个导入中存在的所有类,不包括其子包中的类,例如
javax.swing.event
包中的类等
import
关键字不会直接导入给定的类。它基本上只是将编译器指向类路径中的类,以便能够定位依赖类,从而成功地编译代码。编译类的大小取决于唯一源代码的大小(包括导入语句),但不包括导入类的大小
另见
我自己也问过一次这个问题,我发现这很好。首先,在Java中,您不生成可执行文件(当然,您可以,但不能直接生成)。在运行时,JVM将从磁盘上已有的库中加载程序运行所需的任何内容,因此您的可执行文件不会增长 拥有全面的导入只会减少显式列出要导入的所有内容的需要。实际上,这通常是不鼓励的,因为这可能会在以后产生冲突(例如,如果您已经获得了x.y.Foo,而现在您的w.f.*导入中也有w.v.Foo,该怎么办)
某些IDE(如Eclipse)可以自动将后者修复为前者。例如,import java.lang.*将导入包java.lang中存在的所有类(但不导入子包)。我的意思是,我们在项目中真正使用的任何课程,都不会导入任何不需要的内容(所以我被教授)
import javax.swing.*;