为什么我必须导入 java.awt.* AND java.awt.event.* (例如)
Why do I have to import java.awt.* AND java.awt.event.* (for example)
在我现在正在进行的一个锻炼计划中,它需要一些导入,如下所示:
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.* 吗?
如果不是,为什么这是表面上的惯例?
以星号结尾的导入语句仅从该包导入所有 classes,而不是任何子包。因此,如果您有 class A 住在 com.example,而 class B 住在 com.example.subtype,则导入语句如
import com.example.*;
将导入 class A 但不会导入 class B。要导入 class B,您必须添加
import com.example.subtype.*;
这是为了确保如果您需要 'higher' 包中的多个 classes(从层次上讲),您不会从每个子包中导入所有 classes在它下面您可能不需要或不需要,其中一些可能具有相同的名称,导致 class名称冲突。
即,如果有一个 class com.example.subtype.Type
和一个 class com.example.order.Type
你不希望像 import com.example.*;
这样的导入语句来导入两者类型。
这也是为什么从一个包中显式导入某些 class 而不是所有 class 通常更好的原因(就像你对星号所做的那样),除非你需要那么多 class从那个包中导入的负载只会造成混淆。
您不必使用 .*
例如,你只想使用一个JFrame,你可以导入
import javax.swing.*;
但是如果你只需要一个,为什么要导入包的所有功能(而不是子包)?
最好使用这个(在这个例子中):
import javax.swing.JFrame;
另见此处:Import package.* vs import package.SpecificType
在我现在正在进行的一个锻炼计划中,它需要一些导入,如下所示:
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.* 吗?
如果不是,为什么这是表面上的惯例?
以星号结尾的导入语句仅从该包导入所有 classes,而不是任何子包。因此,如果您有 class A 住在 com.example,而 class B 住在 com.example.subtype,则导入语句如
import com.example.*;
将导入 class A 但不会导入 class B。要导入 class B,您必须添加
import com.example.subtype.*;
这是为了确保如果您需要 'higher' 包中的多个 classes(从层次上讲),您不会从每个子包中导入所有 classes在它下面您可能不需要或不需要,其中一些可能具有相同的名称,导致 class名称冲突。
即,如果有一个 class com.example.subtype.Type
和一个 class com.example.order.Type
你不希望像 import com.example.*;
这样的导入语句来导入两者类型。
这也是为什么从一个包中显式导入某些 class 而不是所有 class 通常更好的原因(就像你对星号所做的那样),除非你需要那么多 class从那个包中导入的负载只会造成混淆。
您不必使用 .*
例如,你只想使用一个JFrame,你可以导入
import javax.swing.*;
但是如果你只需要一个,为什么要导入包的所有功能(而不是子包)?
最好使用这个(在这个例子中):
import javax.swing.JFrame;
另见此处:Import package.* vs import package.SpecificType