在学习Java时,我想到了许多教程的一个令人困惑的属性。考虑一下示例教程中的以下两个导入:

import java.awt.*;
import java.awt.event.*;

第一行显然是导入java.awt包,第二行是awt的子包。 但是星号不应该包含所有子包吗? 因此,第一行应该可以解决问题-不需要第二行吗?如果不是:星号的真正目的/用途是什么?

例如,在MySQL中使用SELECT * FROM foo从表中选择所有字段,也许我很愚蠢地认为这种情况自然而然。

最佳答案

不,软件包是一个整体。尽管从层次上考虑它们通常是有用的,但是在Java语言或编译器中没有任何概念说java.awt.event属于java.awt

您与SQL表的比较不太正确,因为SQL数据库中没有子表之类的东西。相反,假设您有一个代表所有类的表,其中包含以下条目:

ID | Package   | Name
--------------------------
1  | awt       | SomeClassName1
2  | awt.event | SomeClassName2

现在,如果您想获得awt类,您会说:
SELECT * FROM MyTable WHERE Package = 'awt'

您不会期望这会给您两个条目,只是因为程序包名称以awt开头,对吧?

09-30 15:31
查看更多