我对使用Java导入包感到困惑.
当我需要时import java.util.Scanner,它也是由import语句完成的:( import java.util.*这对我来说很有意义,因为Scanner类在里面util).
但这个技巧适用于java.awt.event和java.awt.*.这让我更加困惑.(如果您的答案是Java包没有嵌套,请告诉我上述技巧的原因.如果Java有嵌套和独立包,我怎么能找到它们?
导入通配符不是递归的.
进口java.awt.*也不要导入从什么java.awt.event.它只导入类java.awt,而不是它的"子包".
还应该注意的是,导入包实际上并没有做任何事情,它只是告诉Java在哪里查找你使用的类名.
另外,使用通配符无论如何都有点草率.您应该只导入实际使用的类.
编辑:此问题之前已被问过:递归导入Java和快速谷歌搜索"java递归导入包"会产生一大堆结果,包括:
首先,包似乎是分层的,但它们不是.例如,Java API包括一个
java.awt包,一个java.awt.color包,一个java.awt.font包以及许多其他开头的包java.awt.但是,java.awt.color包,java.awt.font包和其他java.awt.xxxx包不包含在java.awt包中.前缀java.awt(Java Abstract Window Toolkit)用于许多相关的包,以使关系明显,但不显示包含.导入
java.awt.*进口所有在该类型的java.awt包,但它不会导入java.awt.color,java.awt.font或者任何其它java.awt.xxxx的包.如果你打算使用类和其他类型的java.awt.color,以及那些在java.awt,你必须导入他们的所有文件都包:进口
java.awt.*; 进口java.awt.color.*;
和JLS:
包的分层命名结构旨在方便以传统方式组织相关包,但除了禁止包含具有与顶级类型相同的简单名称的子包之外,它本身没有意义(第7.6节)在该包中声明.
例如,在名为的包
oliver和另一个名为的包oliver.twist之间,或者在名为evelyn.wood和的包之间没有特殊的访问关系evelyn.waugh.也就是说,命名包中的代码oliver.twist无法更好地访问包中声明的类型,而oliver不是任何其他包中的代码.