【6日でできるJava入門】パッケージとインポート

 Javaのクラスやライブラリは膨大な数が存在し、それらは整理・管理のためにパッケージという単位でグループ化されています。
 また、クラスを利用する際には、プログラム中で正しい「クラス名(正式名称)」を記述したり、import文を使って簡潔に記述できる仕組みが用意されています。ここでは「パッケージ」と「インポート(import)」の基本と使い方を解説します。

1.パッケージとは

1.1. クラスの正式名称とパッケージ階層

Javaでは、各クラスは所属するパッケージ名+クラス名で一意に特定されます。
クラスの正式名称は、パッケージ階層をドット.で繋げて表現します。

内容
java.lang.StringStringクラス(言語基本)
java.util.Randomランダム生成クラス(ユーティリティ)
java.io.FileInputStreamファイル入力ストリーム(入出力)

階層構造のイメージ

java
├── applet
├── awt
├── beans
├── io ← java.io パッケージ
├── lang ← java.lang パッケージ
│   ├── annotation
│   ├── instrument
│   ├── management
│   ├── ref
│   └── reflect
├── net
├── nio
├── security
├── sql
├── text
├── util
│   ├── concurrent ← java.util.concurrent パッケージ
│   │   ├── jar
│   │   ├── logging
│   │   ├── regex
│   │   ├── zip
│   │   ├── atomics
│   │   └── locks
org
javax

1.2. パッケージの役割

  • クラスをグループ化し、名前の重複を防ぐ
  • 階層的な管理(まるでディレクトリやフォルダのよう)
  • 機能別に整理され、使いやすくなっている。

2.import文の使い方

2.1. import文の基本

プログラム内で「パッケージ名+クラス名」を毎回すべて書くのは大変です。
そこで、import文を使うことで、クラス名だけで利用できるようにします。

例:import文を使わない場合

ファイル名: lesson20_1.java

public class lesson20_1 {
    public static void main(String[] args) {
        java.util.Random rand = new java.util.Random();
        int n = rand.nextInt(10);
        System.out.println("乱数: " + n);
    }
}

実行結果

乱数: 7

例:import文を使う場合

ファイル名: lesson20_2.java

import java.util.Random;

public class lesson20_2 {
    public static void main(String[] args) {
        Random rand = new Random();
        int n = rand.nextInt(10);
        System.out.println("乱数: " + n);
    }
}

実行結果

乱数: 1

2.2. ワイルドカード(*)によるまとめてインポート

複数のクラスを同じパッケージから使う場合は、「*」でまとめてインポートできます。

import java.util.*; の意味

  • これは「java.utilパッケージに含まれるすべてのクラスを使えるようにする」という意味です。
  • *は「ワイルドカード」と呼ばれ、複数のクラス(例:Random, ArrayList, Scannerなど)をまとめてインポートします。

ファイル名: lesson20_3.java

import java.util.*;

public class lesson20_3 {
    public static void main(String[] args) {
        Random rand = new Random();
        ArrayList<String> list = new ArrayList<>();
        list.add("りんご");
        list.add("バナナ");
        System.out.println("リスト: " + list);
    }
}

実行結果

リスト: [りんご, バナナ]

import java.*; のように、javaパッケージ全体はインポートできません。
ワイルドカードが使えるのはパッケージ階層1つ分のみです。

3.自作パッケージの作成と利用

3.1. パッケージ宣言

自分で作成したクラスをパッケージにまとめる場合は、ファイルの先頭でpackage文を使います。

例:自作パッケージの宣言

ファイル名: HelloTool.java

「sampl\tools」ディレクトリ内に「HelloTool.java」を作成します。

package sample.tools;

public class HelloTool {
    public void sayHello() {
        System.out.println("こんにちは、ツールクラスからのメッセージです。");
    }
}

実行結果

使う側のクラス:

ファイル名:PackageUseExample.java

import sample.tools.HelloTool;

public class PackageUseExample {
    public static void main(String[] args) {
        HelloTool tool = new HelloTool();
        tool.sayHello();
    }
}

実行結果

こんにちは、ツールクラスからのメッセージです。

4.パッケージとimportのまとめ表

用語説明サンプル例
パッケージクラスを階層で管理する単位java.util、java.io
import文他のパッケージのクラスを簡単に使うための宣言import java.util.Random;
ワイルドカードパッケージ配下すべてのクラスを一度にインポートimport java.util.*;
package文クラスを自作パッケージに属することを宣言するpackage myapp.tools;

まとめ

  • Javaクラスはパッケージ階層で整理されており、クラス名の前にパッケージ名をつけて管理される。
  • import文を使うことで、クラス名だけで簡単にライブラリ利用ができる。
  • 複数のクラス利用時は*でまとめてインポートできるが、パッケージ階層を超えてのインポートは不可。
  • 自作クラスもパッケージでまとめて管理し、packageimport文で他ファイルから使うことができる。