在大多数代码示例中,我看到有人这样做。
import javax.swing.*; // for the frame
import java.awt.*; // for the checkBox and the label
import java.awt.event.*; // for the checkBox listener
如果我说导入java.awt。*它是正确的,它会导入其中的所有内容,因此不需要说import java.awt.event。*;还是有提速?任何人都可以解释导入库的作用,是导入一个简单的文本类,包含在源代码中还是告诉jvm包含导入的字节代码?所以在java中导入只会切换命名空间,所以我不必输入长类名吗?
答案 0 :(得分:5)
忘记术语 子包 。快点做吧。它在java世界中不存在。
java.awt
是一个包(命名空间),java.awt.event
是另一个包,它们没有任何共同之处。他们的名字有一些共同点,但这些包完全不相关。 import语句从一个包(名称空间)中导入一个类或一些类。如果您需要来自不同包(命名空间)的类,则必须添加另一个import语句。
BTW ,以回应对另一个答案的评论:您不必使用import语句。如果不使用它们,则只需在java源文件中使用完全限定的类名(除了java.lang
中的类,并自动导入当前包)。因此,import
可以被视为保持代码可读的便捷方式。
要在源文件中使用类,不需要导入 。
答案 1 :(得分:4)
线......
import java.awt.*;
...并不意味着所有子包也将被导入。您必须显式导入每个包。例如,导入java。*并不能提供整个java库。
对于它的价值,我建议只导入特定的类,除非你有充分的理由使用*。
答案 2 :(得分:1)
导入包不会导入其子包。
导入也是关于切换命名空间。
如果您只有import java.awt.*
并且您要使用课程java.awt.Outer.Inner
,则代码中的任何位置都必须将其称为Outer.Inner
。
相比之下,当您说import java.awt.Outer.*
时,您可以将内部类称为Inner
。
答案 3 :(得分:1)
导入只是一个编译时功能,在字节码中,每次使用其实例时,您都会发现只对特定类的直接引用。 存在“import”构造只是为了消除每次使用完整的类名。