在 Java 中的 Import 语句中使用 * [重复]

Posted

技术标签:

【中文标题】在 Java 中的 Import 语句中使用 * [重复]【英文标题】:Use of * in Import Statement in Java [duplicate] 【发布时间】:2013-01-31 14:09:53 【问题描述】:

谁能解释一下 Java 中的 import 语句。有些导入带有 * 后缀,有些则没有。这两者有什么区别?在 import 语句中使用 * 是否会导入所有的类?

看这里import

他们在这里说过,尽管 import 语句看起来是嵌套的,但实际上并非如此。 谁能详细解释一下?

【问题讨论】:

我投票关闭,太本地化了。每个 Java 教程/书籍都回答了这个问题... @adarshr 一点都没有:OP 不会问为什么或者它是否不好。 @dystroy 即便如此,通过阅读该问题的所有答案,OP 可以清楚地了解 import 语句。不要只看标题:) @adarshr 对我来说,家庭关闭的原因要准确得多。如果没有遇到这种情况,您甚至无法完成教程。 这里不是讨论、澄清和学习的地方,对吧? 【参考方案1】:

使用* 被认为是一种不好的做法。它用于导入该包中的所有文件。更正确的方法是列出您需要的每个类,特别是在您在 IDE 之外进行代码审查并且需要知道您正在使用的类的版本的情况下。从本质上讲,它滋生了开发团队的懒惰。

评论

对于那些认为这不是我所说的“坏”做法的人。你怎么能说这是一个好习惯呢?

import java.util.*;  
import java.io.*;

即使编译器会忽略* 下的所有内容,除了您导入的List,这对将来查看代码的人有何帮助?我认为这里的很多人都忘记了您正在为人类而不是计算机编写代码。此外,当 Java 消失并且您正在使用 SuperAwesomeLanguage 时,您怎么可能转换此代码?鉴于以下示例,请在您对 java 的了解为零时将其转换为您的新语言:

public class Foo  

    private List list;

Listio 中吗? io 甚至是必需的吗?问题是你不知道。因此,通过明确说明,您可以指导未来的开发人员了解需要哪些类。

【讨论】:

The use of * is considered a bad practice - 你有这个来源吗? 编译器将忽略未使用的类。我不认为这被认为是“不好的做法”。 完成你的代码然后 ctrl-shift-o :) @dystroy - 我认为你一针见血 - 这是一种意见。我自己,我更喜欢明确列出所有包,如果只是为了减少简单名称冲突的(轻微)机会。但这只是我的一种做法,而不是您在任何地方都可以找到的规定的最佳做法。 @Woot4Moo 说某事不是“坏习惯”与说它是“好习惯”是不一样的。我承认,如果发现冲突,可能会出现问题。但是import static org.junit.Assert.*; 为我节省了大量编码时间...【参考方案2】:
import com.example.*

导入 com.example 包中的所有类

import com.example.ClassName

只导入 ClassName 类

【讨论】:

【参考方案3】:

来自您的链接:

导入 java.util.*;

* 是一个“正则表达式运算符”,它将匹配任何 字符的组合。因此,此导入语句将 在 java.util 中导入所有内容。如果您尝试过进入并运行 上面的示例程序,您可以将导入语句更改为此 一个。

所以是*后缀导入此路径中的所有类

【讨论】:

【参考方案4】:

在 import 语句中使用 * 是否会导入所有类

是的。

From Oracle's Documentation :

type-import-on-demand 声明允许所有可访问的类型 根据需要导入的命名包或类型。

【讨论】:

以上是关于在 Java 中的 Import 语句中使用 * [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在java程序中啥条件下要用import语句?啥时候不用?

使用JAVASSIST怎样向Class文件中加入import语句?

Vscode清除没有用到的import语句

纯小白干货:Java import以及Java类的搜索路径

在 Java 中使用 import 语句自动删除显式包声明

Java的访问权限机制