以下命令之间究竟有什么区别:
import javax.swing.JPanel;
和
import javax.swing.*;
如果我使用第二个,编译器将从swing中导入所有文件或仅导入所需的文件,可执行文件的大小是否有任何差异?提前谢谢
答案 0 :(得分:4)
第一个只导入javax.swing.JPanel
class。
第二个导入javax.swing
package中存在的所有类,不包括其子包中的类,例如javax.swing.event
包中的类等。
import
关键字不会直接导入给定的类。它基本上只是将编译器指向要在类路径中出现的类,以便能够找到依赖类,从而成功编译代码。编译类的大小取决于唯一源代码的大小(包括import语句),它不包括导入类的大小。
答案 1 :(得分:1)
您的申请执行方面没有区别。唯一的区别是在编译期间它可能有点(在大多数情况下不明显)较慢。由于代码可读性,很多人更喜欢。*而不是完全限定的包。
我自己也问了这个问题,我发现这个explanation非常好。
答案 2 :(得分:1)
首先,在Java中,您不会生成可执行文件(嗯,您可以,但不能直接生成)。在运行时,JVM将加载程序从磁盘上已有的库运行所需的任何内容,因此您的可执行文件不会增长。
拥有全能导入只会减少明确列出您要导入的所有内容的需要。它实际上经常被劝阻,因为这可能会在以后产生冲突(例如,如果你已经获得了x.y.Foo,现在你的w.f. *导入中也存在w.v.Foo)。
某些IDE(例如Eclipse)可以自动将后者修复为前者。
答案 3 :(得分:0)
第一个将导入该特定包,但第二个将导入所有包。第一个将更小,因为它只是一个包。
答案 4 :(得分:0)
例如,import java.lang。*将导入包java.lang中存在的所有类(但没有子包)。我的意思是我们在项目中真正使用的任何课程,不会导入任何不需要的东西(所以我被教导)。