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

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

看这里import

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

【问题讨论】:

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

标签: java import


【解决方案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 声明允许所有可访问的类型 根据需要导入的命名包或类型。

      【讨论】:

        猜你喜欢
        • 2019-11-30
        • 1970-01-01
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 2011-12-05
        相关资源
        最近更新 更多