Java import パッケージ名の省略機能

パッケージ内のクラスを使う場合には、ドット(.)を使って、
パッケージ名.クラス名 と、記述しなければなりませんが、

例えば、

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は、クラス名だけを指定する方法で、
指定されたクラスの全ての静的メンバがインポートされます。