ビュー パッケージから実際に使用するオブジェクトをインポートするだけでなく、 import android.view.* などのステートメントを使用することに不利な点はありますか? * を使用すると、コンパイル済みの Android アプリケーションのサイズが大きくなりますか? はいの場合、パッケージ全体を * でインポートするか、単一のオブジェクトのみをインポートするかを決定するためのベストプラクティスは何ですか? ありがとう
2 に答える
import
何もロードしていないことを知っておく必要があります。クラスローダーがそれを行います。
すべてのimport
機能は、コード内で長いクラス名の代わりに短いクラス名を使用できるようにすることです (例:Connection
の代わりにjava.sql.Connection
)。Android アプリのサイズにはまったく影響しません。
著書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 (その著者の 1 人として James Gosling がいます)という本の中で、著者は次のように述べています。
import ステートメントは、(コードで使用している型に関する) 情報をコンパイラに提供するだけです。ファイルが現在のファイルに「含まれる」ことはありません。
The Java Language Specification (Bill Joy、James Gosling 他著)の書籍から推測したことと、上記で言及したものは、ワイルドカードを使用したインポート ステートメントはType-Import-on-Demand Declarationと呼ばれることです。これは、コンパイラが知らない名前を見つけた場合、import-on-demandステートメントで指定されたパッケージを調べて、その名前のメンバーがあるかどうかを確認するようにコンパイラに指示します。