パッケージ
この節の要点
- パッケージはクラスをまとめたフォルダのようなものである。
- 自分が属するパッケージ外のクラスを使う際は、
import文を使ってそのクラスが属するパッケージを指定する必要がある。
Cでは、外部のライブラリで定義されている関数を使いたい時、そのライブラリを読み込んで、関数名を使って呼び出します。ここで、複数のライブラリを読み込んだ時に、もし、それぞれのライブラリに同名の関数が定義されていた場合、関数名前の衝突が起こり、読み込むことができません。
これを防ぐためには、関数名を注意深く設定する必要があります。その結果、関数名が長大になったり、見ただけで何をする操作なのかわからないなど、弊害が生まれます。
Javaでは、先に述べた パッケージ(Package) をつかうことで、名前の衝突を避けることができます。
以下に例を示します。ここでは、array.utilsパッケージを作成し、その中にArrayPrinterクラスを作成してみましょう。
まず、プロジェクトペインの現在のプロジェクトの中のソースパッケージを選択した状態で右クリックし、新規 > Javaパッケージ...を選びます(図71)。

New Javaパッケージダイアログにて、パッケージ名をarray.utilsとして終了を選びます。
次に、同じくプロジェクトペインで作成したパッケージarray.utilsを選択した状態で右クリックし、新規 > Javaクラス...を選びます(図72)。

New Javaクラスダイアログにて、クラス名をArrayPrinterとして終了を選びます。
すると、エディタペインに、ArrayPrinterクラスのソースコードのひな型が開かれます。
このひな型をみると先頭に図73にしめすpackage文が明記され、空の状態のArrayPrinterクラスがarray.utilsパッケージに属した状態で作成されていることがわかると思います。
package array.utils;
図74に示すソースコードのArrayPrinterクラスのようにprintIntクラスメソッドを持つように変更しましょう。
public class ArrayPrinter {
public static void printInt(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i]);
}
System.out.println();
}
}
続いて、作成したarray.utilsパッケージに含まれるArrayPrinterクラスのprintIntクラスメソッドをmainメソッドから呼び出してみたいと思います。
図75に示すようにプロジェクトを作成した際に初めに作成されるクラスのmainメソッドを改変してみましょう。
int[] x = new int[]{2, 7, 1, 8, 2, 8, 1}; // 配列オブジェクトの割り当てと初期化を同時に行う記法
ArrayPrinter.printInt(x);
ここで、図75の1行目の書き方は、配列型変数に、配列型オブジェクトを作成し初期化したものを割り当てる方法です。この書き方は図76に示すの書き方と同じです。
int[] x = new int[7]; // 長さ7のint型配列オブジェクトの割り当て
x[0] = 2; // 以下、配列オブジェクトの初期化
x[1] = 7;
x[2] = 1;
x[3] = 8;
x[4] = 2;
x[5] = 8;
x[6] = 1; // 配列オブジェクトの初期化、以上
このままでは正しく実行できずエラーとなります。なぜならば、ArrayPrinterクラスが含まれるパッケージを指定できていないためです。
エディタをよく見ると、図77に示すように、 赤波線がエラーが起こる箇所に表示されます 。ここで、マウスカーソルでこの波線上にフォーカスを合わせると、エラー内容が記述されたポップアップが表示されます。

先に示したように、パッケージを指定した呼び出し方は、array.utils.ArrayPrinterのようにパッケージ名とクラス名をピリオドでつないで呼び出すか、import文を使ってあらかじめarray.utilsパッケージのArrayPrinterクラスを読み込んでパッケージ名を省略して呼び出す、2種類の方法があります。
ここでは、IDEを使ったコードアシスト機能を使って、import文を使ったパッケージを読み込む方法を実施してみましょう。赤波線の箇所をクリックして、テキストカーソルを赤波線に合わせます。その後、Alt+Enterキーを押してみましょう。図78に示すような修正候補を提示してくれます。

ここでは、一番上の項目であるarray.utils.ArrayPrinterをインポートに追加を選びましょう。
すると、自動でソースコードの先頭にimport array.utils.ArrayPrinter;の1文が追加され、赤波線が消えたはずです。
以上のように、IDEの機能を使うことで効率的なエラー修正が可能です。
このように、IDEでプログラミングをすることでコードアシスト機能を使うことができ、わざわざ独自にimport文を記入せずとも、簡潔にプログラムを作成できます。