Javaパッケージのインポート(import)
パッケージをインポートする - import命令
import pname.clazz;
import pname.*;
pname: パッケージ名
clazz: クラス名
パッケージを含むクラス名をFQN(fully qualified name)と呼びます。本来、クラスを宣言するにはFQNで記述する必要があります。しかし、com.devkuma.tutorial.basic.Animalのような名前を毎回記述するのは面倒です。
そこで、あらかじめ使用するパッケージをインポート(import)宣言しておくことで、コード内ではパッケージを省略して記述できます。import命令は一般的にpackage宣言の直後に記述します。たとえば、次は同じ意味です。
package com.devkuma.basic.imports;
import com.devkuma.tutorial.basic.Animal;
// ... 中略 ...
Animal a = new Animal();
import宣言がない場合は、次のように記述する必要があります。
com.devkuma.tutorial.basic.Animal a = new com.devkuma.tutorial.basic.Animal();
com.devkuma.tutorial.basicパッケージ下のすべてのクラスをまとめて取り込みたい場合は、次のように記述することもできます。
import com.devkuma.tutorial.basic.*;
import宣言は名前を宣言するという意味しかないため、*を使用したからといってパッケージ全体をimportしてアプリが肥大化することはありません。ただし、最近ではコード内で利用しているクラスを明確にするという意味で、可能な限り*(on-demand import)は利用しないのが慣例です。
Note
`java.lang`パッケージはよく利用されるという性質上、自動的にインポートされます。明示的に`import`を宣言する必要はありません。
import static命令 - クラスメソッド・フィールドを取り込む
import static pname.clazz.member;
import static pname.clazz.*;
pname: パッケージ名
clazz: クラス名
member: メンバー名
import static命令を使うと、クラス名を指定せずにクラスのメンバーを呼び出すこともできます。
たとえば、次はjava.lang.Mathクラスのabsメソッドで絶対値を求める例です。呼び出すときにMath.~のように記述しなくてもかまいません。
package com.devkuma.basic.imports;
import static java.lang.Math.*;
public class ClassStaticImport {
public static void main(String[] args) {
System.out.println(abs(-10)); // 結果: 10
}
}
通常のクラスのインポートと同じように、メンバー名まで明示することも可能です。上の場合なら、次のようにimport static命令を呼び出しても同じ意味です。
import static java.lang.Math.abs