在学习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
开头,对吧?