Java パッケージ完全マスター:作成、インポート、ベストプラクティス
Java のパッケージとは?
Java のパッケージ は、クラス、サブパッケージ、インターフェースの集合です。クラスをフォルダ構造で整理し、容易に検索・使用できるようにします。何よりコードの再利用性を高めます。
Java の各パッケージは固有の名前を持ち、クラスとインターフェースを別の名前空間(名前グループ)に整理します。
同じパッケージ内では同名のインターフェースとクラスを共存できませんが、異なるパッケージなら可能です。これは各 Java パッケージに別個の名前空間を割り当てることで実現されます。
構文:
package パッケージ名;
以下のビデオでパッケージ作成の手順を確認できます。
動画が見られない場合はこちらをクリック
例でパッケージを学びましょう。クラスとオブジェクトを定義し、パッケージ p1 でコンパイル、その後 Java パッケージとして実行します。
パッケージの作成方法
パッケージ作成はシンプルです:
- パッケージ名を決める
- Java ソースファイルの最初の行に package 文を記述
- ソースファイルにパッケージに含めたいクラス、インターフェース等を記述
- コンパイルして Java パッケージを作成
ステップ 1) 以下のパッケージプログラムを検討:
package p1;
class c1() {
public void m1() {
System.out.println("m1 of c1");
}
public static void main(string args[]) {
c1 obj = new c1();
obj.m1();
}
}

ここで、
- クラスをパッケージに入れるには、コードの最初の行で package p1 を定義
- クラス c1 を作成
- 1行出力するメソッド m1 を定義
- main メソッドを定義
- クラス c1 のオブジェクトを作成
- メソッド m1 を呼び出し
ステップ 2) このファイルを demo.java として保存


ステップ 3) ファイルをコンパイル

コンパイル完了。クラスファイル c1 が作成されるが、パッケージは作成されない? 次のステップで解決

ステップ 4) パッケージを作成するには以下のコマンド:
javac –d . demo.java
このコマンドでコンパイラにパッケージ作成を強制します。
「.」 演算子はカレントワーキングディレクトリを表します。

ステップ 5) コードを実行するとパッケージ p1 が作成されます。開くと中に c1.class ファイルがあります。

ステップ 6) 同じファイルを以下でコンパイル:
javac –d .. demo.java
「..」は親ディレクトリを示します。この場合、ファイルは親ディレクトリ(C ドライブ)に保存されます

上記コード実行で親ディレクトリにファイル保存。

ステップ 7) 既存パッケージ p1 内にサブパッケージ p2 を作る場合、コードを修正:
package p1.p2;
class c1 {
public void m1() {
System.out.println("m1 of c1");
}
}

ステップ 8) ファイルをコンパイル

スクリーンショットの通り、パッケージ p1 内にサブパッケージ p2 が作成され、その中にクラス c1 があります。

ステップ 9) 実行時はクラスの完全修飾名(パッケージ名.サブパッケージ名.クラス名)を指定:
java p1.p2.c1

このようにパッケージが実行され、コードから「m1 of c1」が出力されます。

パッケージのインポート方法
パッケージにバンドルされたクラスのオブジェクトを作成するには、コードで完全修飾名を使用する必要があります。
例:
java.awt.event.actionListner object = new java.awt.event.actionListner();
しかし、使用するクラスごとに長いドット区切りのパッケージパスを入力するのは面倒です。代わりに import 文を使うのが推奨されます。
構文
import パッケージ名;
インポート後、完全修飾名なしでクラスを使用できます。
import java.awt.event.*; // * はこのパッケージの全クラスをインポート import javax.swing.JFrame // ここでは JFrame クラスのみインポート // 使用例 JFrame f = new JFrame; // 完全修飾名なし
例: パッケージをインポート
ステップ 1) コードをエディタにコピー。
package p3;
import p1.*; // p1 パッケージのクラスのみインポート、サブパッケージ p2 は含まれない
class c3 {
public void m3() {
System.out.println("Method m3 of Class c3");
}
public static void main(String args[]) {
c1 obj1 = new c1();
obj1.m1();
}
}
ステップ 2) Demo2.java として保存。javac –d . Demo2.java でコンパイル
ステップ 3) java p3.c3 で実行
パッケージ – 注意点:
- 命名競合を避けるため、パッケージ名は会社のドメイン名を逆順にするのが慣例。例:com.guru99、com.microsoft、com.infosys など
- パッケージ名未指定時、クラスはデフォルトパッケージ(カレントワーキングディレクトリ)に属し、パッケージ自体は無名。そのため以前の課題が実行できた
- パッケージ作成時、package 文は他の import 文より前に記述必須
// 不可 import package p1.*; package p3; // 正しい構文 package p3; import package p1.*;
java.lang パッケージ は、Java で作成するあらゆるクラスにデフォルトでインポートされます。
Java API は非常に広範で、データ構造操作からネットワーキングまでほぼすべてのプログラミングタスクを実行するクラスを含みます。多くの場合、API ファイルをコードで使用します。API ドキュメントはこちらで確認できます。
Java
- フリクションレスなユーザー体験の構築:UXデザインのブループリント
- Microsoft AzureへのJava EEアプリケーションデプロイ:ステップバイステップガイド
- VHDLで文字列リストを作成する: ベスト・プラクティスと実装例
- VHDLで自己検証テストベンチを構築する実践ガイド
- VHDLで保護型とアクセスポインタを用いた動的リンクリスト実装
- Pythonパッケージ:構造、インポート、ベストプラクティス
- Javaオブジェクト配列の作成:ステップバイステップガイド
- Java 乱数生成:Random クラスと Math.random 実践ガイド
- Java BufferedReader でファイル読み込み:実践ガイドと例
- JavaでcharをStringに変換する方法:実践例とベストプラクティス
- Javaで再帰を使って文字列を反転させる方法