需要多次导入库吗

问题描述 投票:0回答:4

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

import javax.swing.*; // for the frame
import java.awt.*; // for the checkBox and the label
import java.awt.event.*; // for the checkBox listener

如果我说的 import java.awt.* 是正确的,它会导入其中的所有内容,所以不需要说 import java.awt.event.*;或者速度有提高吗?任何人都可以解释一下导入库的作用,是导入一个简单的文本类以包含在源代码中,还是告诉 jvm 包含导入的任何内容的字节码?所以在java中导入除了切换命名空间之外什么也不做,这样我就不必输入长类名了?

java import package
4个回答
6
投票

忘记术语子包。快点做吧。它在java世界中不存在。

java.awt
是一个包(命名空间),
java.awt.event
是另一个包,它们没有任何共同点。他们的名字有一些共同的字符,但包完全不相关。 import 语句从一个包(命名空间)导入一个或多个类。如果您需要来自不同包(命名空间)的类,那么您必须添加另一个导入语句。


顺便说一句,回应另一个答案的评论:您不必使用 import 语句。如果您不使用它们,您只需在 java 源文件中使用完全限定的类名(除了:来自

java.lang
的类和当前包会自动导入)。因此
import
可以被认为是保持代码可读性的便捷方法。

为了在源文件中使用类,不需要导入。


4
投票
线路...

import java.awt.*;


...并不意味着所有子包也将被导入。您必须显式导入每个包。例如,导入 java.* 不会为您提供整个 java 库。

就其价值而言,我建议仅导入特定的类,除非您有充分的理由使用 *.


1
投票
导入包不会导入其子包。

导入也涉及到切换命名空间。

如果您只有

import java.awt.*

 并且要使用 
java.awt.Outer.Inner
 类,则在代码中的任何地方都必须将其称为 
Outer.Inner

相比之下,当您说

import java.awt.Outer.*

 时,您可以将内部类称为 
Inner


1
投票
导入只是一个编译时功能,在字节码中,每次使用其实例时,您只会找到对特定类的直接引用。 “导入”结构的存在只是为了消除每次使用完整的类名。

© www.soinside.com 2019 - 2024. All rights reserved.