0

使用诸如 import android.view.* 之类的语句而不是仅从视图包中导入我实际使用的对象是否有一些缺点?如果我使用 *,它会使我编译的 android 应用程序变大吗?如果是,那么决定是使用 * 导入整个包还是仅导入单个对象的最佳做法是什么?谢谢

4

2 回答 2

5

你需要知道它import没有加载任何东西。类加载器就是这样做的。

import所做的只是让您在代码中使用短类名而不是长类名(例如,Connection而不是java.sql.Connection)。它根本不会影响您的 Android 应用程序的大小。

于 2012-05-15T01:12:29.670 回答
4

在他们的《Core Java Volume 1 》一书中,作者指出

java.util.* 语法不那么繁琐。它对代码大小没有负面影响。但是,如果您显式地导入类,您的代码阅读器就会确切地知道您使用了哪些类。

唯一需要担心包的时候是名称冲突。例如,java.util 和 java.sql 包都有一个 Date 类。现在假设您编写了一个导入两个包的程序。*import java.sql.** 和 *import java.util.** 如果你现在尝试使用 Date 类,你会得到一个编译时错误。如果您想同时使用它们,则必须使用完全限定名称。

import 语句的唯一好处是方便。它C 中的 #include 指令不同。在《The Java Programmin Language》(它的作者之一是 James Gosling)一书中,作者声明如下,

导入语句只是向编译器提供信息(关于您在代码中使用的类型);它们不会导致文件被“包含”到当前文件中。

我从The Java Language Specification(Bill Joy、James Gosling 等人)一书中推断出的,我上面提到的一个是带有通配符的 import 语句称为Type-Import-on-Demand Declaration。这告诉编译器,如果它发现它不知道的名称,它应该查看由import-on-demand语句给出的包,以查看它是否具有该名称的成员。

于 2012-05-15T02:11:48.907 回答