当前位置: 首页 > 面试题库 >

导入通配符是否始终导入所有内容?

梁丘诚
2023-03-14
问题内容

我正在研究一个小的Java程序,并且正在使用数组,所以我做到了:

import java.util.Arrays;

后来,我开始扩展以前做过的事情,并决定要从用户那里得到输入,因此我添加了:

import java.util.Scanner;

现在发生了一个想法。我知道我可以这样做:

import java.util.*

然后,我只需要1条导入行,而不是2条(或者我最终需要很多条),但是导入中的通配符是否意味着它将从该包中导入 所有内容
,而不管是否需要它,或者仅将选择性功能被拉?

我的直觉是编写更多代码,仅包含我 知道 我需要的软件包,但是如果没有区别,为什么有人会导入他们需要的更多关卡/软件包?(我宁愿懒惰,写更少的代码)


问题答案:

请清楚导入操作。这并不意味着加载.class文件和字节码。

所有导入操作都允许您使用简短的类名来保存键入内容。

因此,如果java.sql.PreparedStatement在代码中使用PreparedStatement,则可以在import时使用java.sql.PreparedStatement。您可以永久编写Java代码,而无需使用任何import语句。您只需要拼出所有完全解析的类名即可。

而且,类加载器.class在运行时首次使用时仍会从文件中引入字节码。

它为您节省了击键次数。就这样。

它与类加载 无关

就个人而言,我更喜欢避免使用*符号。我拼写每一个导入。我认为它可以更好地记录我的意图。我的IDE是IntelliJ,所以我要求它动态插入导入。

懒惰通常是开发人员的优点,但在这种情况下不是。拼出来,让您的IDE分别为您插入它们。

如果您输入

import java.util.*;

你会得到引用Scanner,并List通过他们的短名称。

但是,如果你想要做同样FutureTaskLinkedBlockingQueue你必须有这样的:

import java.util.concurrent.*;


 类似资料:
  • 问题内容: 如果我说: 我得到了ActionListener类。如果我说: 我得到的事件类 包括 ActionListener吗?或者更好: 我认为,如果像上两个示例中那样包含一个类,则可以有效地导入该类并继承其所有子类。但是,例如,当我仅使用最后一行时,Eclipse经常显示错误,表明它无法解析某些项目,并建议我 同时 包含java.awt和java.awt.event。 问题答案: Java中

  • 问题内容: 我想知道是否有任何方法可以导入包的全部内容,从而不必在调用包名称之前对包中的内容添加前缀? 例如,有一种方法可以替代此方法: 有了这个: 问题答案: Go编程语言规范 进口报关单 如果出现一个明显的句点(。)而不是名称,则在该软件包的package块中声明的所有软件包导出标识符都将在导入源文件的file块中声明,并且必须在不使用限定符的情况下进行访问。 例如, 游乐场:https :

  • 问题内容: 使用ES6,我可以从这样的文件导入多个导出: 但是,我喜欢每个文件有一个模块的组织。我最终得到这样的进口: 我希望能够做到这一点: 或类似的名称,并且每个文件都包含一个默认导出,并且每个模块的名称与其文件相同。 这可能吗? 问题答案: 我认为这不可能,但是模块名称的解析取决于模块加载器,因此可能有支持此功能的加载器实现。 在此之前,您可以使用仅包含以下内容的中间“模块文件” 它会让你做

  • 使用ES6,我可以从以下文件导入多个导出: 但是,我喜欢每个文件有一个模块的组织。我最终得到了这样的导入: 我很想能够做到这一点: 或者类似的东西,可以理解为每个文件包含一个默认导出,每个模块的名称与其文件相同。 这可能吗?

  • 这可能是一个简单的问题,但谷歌什么也没有回报。 我已经阅读了java中的帮助包-导入不工作 我仍然不明白为什么直接导入可以工作,但通配符不行。[编辑]我所说的类包是指一个类包。我对Java还是新手,所以我不知道语义学[编辑] 我有一个课程包:,当我尝试导入com时。公司* 我收到以下错误。 如果我导入明确表示我没有问题。 所以我想我有一个解决方案,但为了学习,有人能解释一下我为什么会看到这个问题吗

  • 问题内容: 为什么呢? 有时我需要导入模块的所有属性,因此我使用通配符导入,但是我的一个Vim脚本(使用flake8作为其语法检查器)总是向我发出警告,并告诉我无法检测到未定义的名称。 使用通配符导入还有其他缺点吗? 问题答案: 使用通常不是一个好主意。通配符导入会导致名称空间污染;您导入的名称超出了所需的数量,并且如果您不小心引用了导入的名称,则可能不会得到所需的NameError。 另外,如果