首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我必须导入java.awt.*和java.awt.event.* (例如)

为什么我必须导入java.awt.*和java.awt.event.* (例如)
EN

Stack Overflow用户
提问于 2015-07-10 06:56:37
回答 2查看 6.7K关注 0票数 2

在我现在正在进行的一个练习项目中,它需要少量的进口,如下所示:

代码语言:javascript
运行
复制
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.*,是否需要导入它?

如果不是,为什么这看起来是惯例呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-10 07:05:13

以星号结尾的import语句仅从该包导入所有类,而不是导入任何子包。因此,如果A类生活在com.example中,B类生活在com.example.subtype中,则使用以下的导入语句

代码语言:javascript
运行
复制
import com.example.*;

将导入A类,而不是B类,为了导入B类,您必须添加

代码语言:javascript
运行
复制
import com.example.subtype.*;

这是为了确保如果您需要一个“高级”包中的许多类(从层次结构上讲),您不会从它下面的每个子包中导入您可能不需要或不想要的所有类,其中一些类的名称可能会导致类名冲突。

ie,如果存在类com.example.subtype.Type和类com.example.order.Type,则不希望像import com.example.*;这样的导入语句导入这两种类型。

这也是为什么通常最好是显式地导入某些类,而不是从包中导入所有类(就像您使用星号一样),除非您需要从该包中导入那么多类,否则导入的负载只会造成混淆。

票数 3
EN

Stack Overflow用户

发布于 2015-07-10 07:08:03

你不必使用.*

例如,您只想使用JFrame,就可以导入

代码语言:javascript
运行
复制
import javax.swing.*;

但是,如果您只需要一个包,为什么要导入包的所有功能(而不是子包)?

最好使用这个(在本例中):

代码语言:javascript
运行
复制
import javax.swing.JFrame;

另见此处: vs import package.SpecificType

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31334367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档