不应该“进口富。*”,也包括分包“foo.bar。*”?(Shouldn't “import

2019-06-27 09:48发布

学习Java的,我想过一个,对我来说,很多教程相当混乱财产。 考虑从样品教程以下两个进口:

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

第一行显然进口java.awt包,而第二个AWT的分装。 但不应星号包括所有的子包? 因此,行应该做的伎俩 - 线两条应该没有必要? 如果没有:那么什么是星号的真正目的/使用?

例如,使用SELECT * FROM foo在MySQL选择表中的所有领域,也许是我傻的假设,这自然是T他的情况。

Answer 1:

不,包作为一个整体。 虽然它往往以分层想起他们有用,但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 ,你会吗?



Answer 2:

见我的答案在这里 (和我的评论)。 通配符只能去1平深,不进子包



Answer 3:

每个包的名称(“ABC”)是一个分立封装。 两种封装,类似的命名前缀(“ABC”和“ABD”,例如)是语言独立的包装,无论是命名空间和访问控制。

对于人类来说,当然,这代表了包之间的可能关系。



文章来源: Shouldn't “import foo.*” also include subpackage “foo.bar.*”?