在我现在正在进行的一个练习项目中,它需要少量的进口,如下所示:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import java.net.URL;
ELI5:我的问题(我略过新手入门教程,进入中间阶段?)(现在)正如标题所示。如果我已经用java.awt.*介绍过java.awt.event.*,是否需要导入它?
如果不是,为什么这看起来是惯例呢?
发布于 2015-07-10 07:05:13
以星号结尾的import语句仅从该包导入所有类,而不是导入任何子包。因此,如果A类生活在com.example中,B类生活在com.example.subtype中,则使用以下的导入语句
import com.example.*;
将导入A类,而不是B类,为了导入B类,您必须添加
import com.example.subtype.*;
这是为了确保如果您需要一个“高级”包中的许多类(从层次结构上讲),您不会从它下面的每个子包中导入您可能不需要或不想要的所有类,其中一些类的名称可能会导致类名冲突。
ie,如果存在类com.example.subtype.Type
和类com.example.order.Type
,则不希望像import com.example.*;
这样的导入语句导入这两种类型。
这也是为什么通常最好是显式地导入某些类,而不是从包中导入所有类(就像您使用星号一样),除非您需要从该包中导入那么多类,否则导入的负载只会造成混淆。
发布于 2015-07-10 07:08:03
你不必使用.*
例如,您只想使用JFrame,就可以导入
import javax.swing.*;
但是,如果您只需要一个包,为什么要导入包的所有功能(而不是子包)?
最好使用这个(在本例中):
import javax.swing.JFrame;
https://stackoverflow.com/questions/31334367
复制相似问题