【问题标题】:Meaning of the import statement in a Java fileJava文件中import语句的含义
【发布时间】:2011-02-23 14:15:54
【问题描述】:

谁能清楚地向我解释当我们在 Java 文件中使用 import 语句时到底发生了什么?如果我们添加越来越多的 java 类,它会增加文件的大小吗?为什么我们不使用类加载器呢?进口有什么限制?

【问题讨论】:

  • 在 Java 中导入!= 在 C 或 C++ 中包含

标签: java


【解决方案1】:

Java 中的 import 语句允许引用在其他包中声明的类以进行访问,而无需引用完整的包名。如果您愿意始终按其全名引用 java.util.List,则不需要任何 import 语句,对所有其他类依此类推。但是如果你想引用它为List,你需要导入它,以便编译器知道你引用的是哪个List。

java.lang 包中的类会自动导入,因此您无需显式执行此操作,例如引用 String。

阅读更多:http://wiki.answers.com/Q/Why_import_statement_is_needed_in_Java_program#ixzz1zDh2ZBhE

【讨论】:

    【解决方案2】:

    import declarations(不是 statements)本质上是源代码级别的简写使能器:它允许您引用类型或 static成员使用单个标识符(例如Listmin)而不是完全限定名称(例如java.util.ListMath.min)。

    import 声明部分是源代码的编译时元素,在运行时不存在。在 JVM 字节码中,类型名称始终是完全限定的,除非您使用编写不佳的编译器,否则二进制文件应该只包含实际使用的类型的名称。

    类加载器用于完全不同的概念,与import 功能完全无关。

    JLS 7.5 Import Declarations

    import 声明 允许static 成员或命名类型通过由单个标识符组成的简单名称来引用。如果不使用适当的 import 声明,则引用在另一个包中声明的类型或另一种类型的 static 成员的唯一方法是使用完全限定名称。

    单一类型导入声明通过提及其规范名称来导入单一命名类型。

    按需类型导入声明根据需要导入命名类型或包的所有可访问类型。从未命名的包中导入类型是编译时错误。

    单个静态导入声明通过指定其规范名称从类型中导入具有给定名称的所有可访问静态成员。

    按需静态导入声明会根据需要导入命名类型的所有可访问静态成员。

    参考文献

    另见


    各种import相关问题

    import的语法作用:

    按需与单一类型:

    开启import static

    性能相关问题:

    【讨论】:

      【解决方案3】:

      包由类组成,包中的类由方法、变量等组成。 一个类有一个由包名和类名组成的全名。如果你需要在你的代码中使用一个类,你需要为编译器提供类的全名。所以,你可以使用 import 语句,或者你可以在代码中使用该类的每个地方输入全限定名。

      例如,如果您在代码中需要AraryList,则使用导入语句import java.util.ArrayList;,而不是在每个需要Arraylist 的地方都输入完全限定的类名。

      更多详细信息,请参阅JLS

      【讨论】:

        【解决方案4】:

        java 中的导入只是对编译器的提示。它根本不影响二进制类文件的大小。您可以使用一次导入,也可以在每次使用时写入类的全名。

        导入只是对可读性和开发人员懒惰的让步。

        【讨论】:

          【解决方案5】:

          import 语句对编译器说:如果您有一个在此类中找不到的函数,请查看导入列表。

          这样您就可以引用其他包中的函数,而无需将定义(如 C(++) .h 文件)复制到您自己的包中。

          【讨论】:

          • 导入声明通常不会帮助解析方法,它们有助于解析类/类型。只有import static可以直接帮助解析一个方法。
          猜你喜欢
          • 2019-05-17
          • 1970-01-01
          • 2011-11-01
          • 1970-01-01
          • 2011-12-05
          • 1970-01-01
          • 1970-01-01
          • 2013-01-31
          • 2013-02-21
          相关资源
          最近更新 更多