Java文件中import语句的含义

时间:2010-05-25 08:45:37

标签: java

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

5 个答案:

答案 0 :(得分:42)

import 声明(不是语句)本质上是源代码级别的简写启用程序:它允许您引用类型或{ {1}}成员使用单个标识符(例如staticList)而非完全限定名称(例如minjava.util.List)。

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

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

JLS 7.5 Import Declarations

  

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

     

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

     

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

     

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

     

static-import-on-demand声明根据需要导入所有可访问的命名类型的静态成员。

参考

另见


各种static相关问题

关于import的语法角色:

on on-demand vs single-type:

import

与绩效相关的问题:

答案 1 :(得分:4)

包由类组成,包中的类包含方法,变量等。 类具有全名,包括包名和类名。如果需要在代码中使用类,则需要为编译器提供类的全名。因此,您使用import语句或者您可以在代码中使用该类的每个位置键入完全限定名称。 / p>

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

有关详细信息,请参阅JLS

答案 2 :(得分:3)

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

进口只是对可读性和开发商懒惰的让步。

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

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