在我现在正在进行的练习计划中,它需要一些进口,如下:
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.event。*如果我已经用java.awt覆盖了它。*?
如果没有,为什么这似乎是惯例?
答案 0 :(得分:2)
以星号结尾的import语句只导入该包中的所有类,而不是任何子包。因此,如果您有一个生活在com.example中的A类,并且B类生活在com.example.subtype中,那么像
这样的导入语句import com.example.*;
将导入A类但不导入B类。要导入B类,您必须添加
import com.example.subtype.*;
这是为了确保如果你需要一个来自“更高”包(层次结构)的类中的一些类,你不要从它下面的每个子包中导入你可能不需要或不想要的所有类,其中一些可以具有相同的名称导致类名冲突。
即,如果有一个类com.example.subtype.Type
和一个类com.example.order.Type
,您不希望像import com.example.*;
这样的导入语句导入两个类型。
这也是为什么通常更好地显式导入某些类而不是包中的所有类(就像使用星号一样),除非你从该包中需要这么多类,否则导入的负载只会混淆
答案 1 :(得分:0)
你不必使用。*
例如,您只想使用JFrame,可以导入
import javax.swing.*;
但为什么要导入包的所有功能(不是子包),如果只需要一个?
更好地使用它(在本例中):
import javax.swing.JFrame;