在Java中,我们既可以导入单个类,也可以导入整个类集(一个包)。
举个例子
import java.util.*
包括
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
除了代码的长度之外,以任何方式使用每种方法是否有特定的优势?内存分配?性能?
两者都没有性能或内存分配优势,它们都将编译为相同的字节码。
该import
语句是告诉编译器在哪里可以找到源代码所引用的类。
但是,仅按类导入有一个优势。如果在两个包中有一个名称完全相同的类,则在引用哪个类时就会发生冲突。
java.awt.List
类和java.util.List
类就是这样的例子。
假设我们要使用a java.awt.Panel
和a java.util.List
。如果源按以下方式导入软件包:
import java.awt.*;
import java.util.*;
然后,引用List
该类将变得模棱两可:
List list; // Which "List" is this from? java.util? java.awt?
但是,如果一个显式导入,则结果将是:
import java.awt.Panel;
import java.util.List;
List list; // No ambiguity here -- it refers to java.util.List.
问题内容: 我了解(对于容器)和(对于图像)之间的区别。但最终,保存或导出产生的tarball应该用作 图像 。 那么,为什么有2条命令可以从压缩包制作图像呢? 问题答案: 确实会产生tarball, 但 包含所有父图层以及所有标签+版本。 也会产生压缩包,但没有任何层/历史记录。 当人们想“展平”映像时通常使用它,如Thomas Uhrig的 “展平Docker容器或映像 ” 所示: 但是,一旦
问题内容: 在Python中,我不太清楚以下两行代码之间的区别: 要么 他们不是都只是从模块X导入所有内容吗?有什么不同? 问题答案: 之后,你可以参考的东西一样。之后,您可以像一样直接引用事物。因为第二种形式将名称直接导入到本地名称空间,所以如果您从许多模块中导入内容,则可能会产生冲突。因此,不鼓励使用。 您也可以执行,仅将导入到本地名称空间,而不导入中的所有内容。这样做会更好,因为如果您列出了
问题内容: 我很惊讶地发现 和 对全球成员产生了不同的影响。我想确认我的实验是正确的行为。 在第一个示例中,更改foo模块中的成员将反映在所有导入foo的代码中。但是,在以后的情况下更改该成员似乎仅影响导入该成员的文件。换句话说,使用后一种方法将为每个导入文件提供其自己的foo成员副本。 我想要的行为是可以从所有文件访问foo.x,可以从所有文件更改它,并在所有文件中反映该更改(如果愿意,则为真正
问题内容: 从Maven 2.0.9开始,有可能包含 在本节中。 据我了解,它将被“ pom”替换为包含在此pom中的依赖项,就好像它们最初是在此处定义的一样。 上面的解决方案和对此没有范围的pom的简单依赖之间有什么区别(我看到后者被称为“依赖项分组”)?这样的“分组”依赖性在解决依赖性优先级时唯一的区别是低优先级吗? 问题答案: 您只能导入 托管依赖项 。这意味着您只能 将 其他POM导入到项
问题内容: 用Java导入和扩展类有什么区别 问题答案: 那是两件事。 导入一个类是为了使您可以使用该类,而无需在要编写的当前类中限定全名。 扩展类是创建一个新类,该新类是某个其他类的子类。这将允许您添加或更改要扩展的类的功能。
问题内容: 说,我们在ES6中使用React。我们将React和Component导入为 为什么语法不同?我们不能按以下规定使用吗? 问题答案: 下面是文档的。 以上是默认导入。默认导入使用导出。只能有一个默认导出。 但这是成员导入(称为导入)。成员进口与出口。可以有很多成员出口。 您可以使用以下语法导入两者: 在JavaScript中,默认导入和命名导入被拆分,因此您不能像默认导入那样导入命名导