パッケージ内のクラスを使う場合には、ドット(.)を使って、
パッケージ名.クラス名 と、記述しなければなりませんが、
例えば、
5回くらいネストするパッケージ構造になっている場合、
パッケージ名.パッケージ名.パッケージ名.
パッケージ名.パッケージ名.クラス名
と言うような記述をしなければならないため、
非常にムダが多い書き方になってしまいます。
そこで、このパッケージ名の部分を省略できる書き方があります。
長いパッケージ名を省略する記述方法
パッケージ(フォルダ)構成図
pkg_A(フォルダ) └pkg_B(フォルダ) └Chello.java(ソースファイル) pkg_main(フォルダ) └Cmain.java(ソースファイル) |
ファイル名:Chello.java
package pkg_A.pkg_B;
public class Chello {
void show() {
System.out.println("Hello");
}
}
ファイル名:Cmain.java
package pkg_main;
import pkg_A.pkg_B.Chello;
public class Cmain {
public static void main(String[] args) {
Chello obj = new Chello();
obj.show();
}
}
このプログラムでは、 Cmain.javaファイルに、
import pkg_A.pkg_B.Chello; と言う記述があります。
これをインポート宣言と言います。
このように書く事によって、このファイル中では、
本来、pkg_A.pkg_B.Chello と記述しなければならないのに、
Chello と言った、パッケージ名を省略した書き方が可能になります。
上記の例では、pkg_A.pkg_BパッケージのChelloクラスのみ
省略できる書き方です。
もっと便利な書き方があります。
import pkg_A.pkg_B.*;
このように書くとpkg_A.pkg_Bパッケージ内に含まれている全てのクラスを
インポートできます。
注意点
この場合、pkg_Aパッケージ内のクラスはインポートされません。
両方ともインポートしたい場合は、2つに分けて書く必要があります。
import pkg_A.*;
import pkg_A.pkg_B.*;
staticインポート
通常のインポート宣言では、staticの付いた静的メンバ変数や
staticの付いた静的メンバ関数を指定する場合にも
クラス名.静的メンバ変数名
クラス名.静的メンバ関数名
のように指定しなければなりません。
この記述から、”クラス名.” の部分を省略できる書き方があります。
1 import static パッケージ名.クラス名.静的メンバ変数名;
2 import static パッケージ名.クラス名.静的メンバ関数名;
3 import static パッケージ名.クラス名.*;
1と2は、個別に指定する方法で、
個別に指定した静的メンバだけがインポートされます。
3は、クラス名だけを指定する方法で、
指定されたクラスの全ての静的メンバがインポートされます。