学习Java的,我想过一个,对我来说,很多教程相当混乱财产。 考虑从样品教程以下两个进口:
import java.awt.*;
import java.awt.event.*;
第一行显然进口java.awt包,而第二个AWT的分装。 但不应星号包括所有的子包? 因此,行应该做的伎俩 - 线两条应该没有必要? 如果没有:那么什么是星号的真正目的/使用?
例如,使用SELECT * FROM foo
在MySQL选择表中的所有领域,也许是我傻的假设,这自然是T他的情况。
学习Java的,我想过一个,对我来说,很多教程相当混乱财产。 考虑从样品教程以下两个进口:
import java.awt.*;
import java.awt.event.*;
第一行显然进口java.awt包,而第二个AWT的分装。 但不应星号包括所有的子包? 因此,行应该做的伎俩 - 线两条应该没有必要? 如果没有:那么什么是星号的真正目的/使用?
例如,使用SELECT * FROM foo
在MySQL选择表中的所有领域,也许是我傻的假设,这自然是T他的情况。
不,包作为一个整体。 虽然它往往以分层想起他们有用,但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
,你会吗?
见我的答案在这里 (和我的评论)。 通配符只能去1平深,不进子包
每个包的名称(“ABC”)是一个分立封装。 两种封装,类似的命名前缀(“ABC”和“ABD”,例如)是语言独立的包装,无论是命名空间和访问控制。
对于人类来说,当然,这代表了包之间的可能关系。