什么是多次导入库的需要

时间:2011-06-06 09:02:07

标签: java compiler-construction import package

在大多数代码示例中,我看到有人这样做。

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中导入只会切换命名空间,所以我不必输入长类名吗?

4 个答案:

答案 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”构造只是为了消除每次使用完整的类名。