パッケージ (package)

パッケージは、アプリケーションを構成するソフトウェアの単位を定義します。そしてそこには関連したクラス、インターフェイス、サブパッケージおよびパッケージ内のクラスが使用するリソースファイルを含みます。

パッケージには、

  • 関連したクラスやインターフェイスのグループを作る。
  • 名前の衝突を避けるための名前空間 (namespace) を作る。
  • アプリケーションのフレームワークを開発するための、保護領域を提供する。

のような機能があります。

パッケージの名前付け

一意なパッケージ名をつけるには、所有するWebサイトのドメイン名を使用します。たとえばexample.comを所有するとき、Sampleパッケージを作成するには、

package com.example.Sample;

のようにします。

デフォルト パッケージ (default package)

パッケージ名を付けられていないパッケージのことです。名前付けをしていないクラスなどは、このパッケージに属します。

インポート (import)

※Eclipseならば、参照されているパッケージのimportの追加と削除を自動で行えます

インポートするパッケージは、正しく参照されている必要があります。javacならば-classpathオプション、Eclipseならばライブラリの参照設定をします。

staticインポート

staticメンバのクラス名の記述を省き、コードの可読性を向上させます。

staticインポート (static import)

インポートするメンバを指定します。

import static パッケージ名.クラス名.メンバ名;

オンデマンドstaticインポート (static import on demand)

インポートするメンバが属するクラス名を指定し、メンバ名の代わりにアスタリスク「*」を記述します。この方法では、コンパイラは不明な名前が見つかったときに、指定のクラスからstaticメンバを探します。

import static パッケージ名.クラス名.*;

これはコードの可読性と明瞭性を改善するための機能であり、コーディングの手間を省くために使用すべきではありません。誤用するとコードの可読性を下げ、コンパイラにとっても名前衝突の原因となります。

型のインポート

型を参照するために、完全修飾名の代わりに単純名を使用できるようにします。なお型のインポートは、staticインポートを一般化したものです。

単一型インポート (single type import)

import パッケージの正準名;

ちなみにC#では、これはusingディレクティブに相当します。

オンデマンドインポート (import on demand)

import パッケージの正準名.*;

参考

パッケージのバージョン管理

参考書

Javaのドキュメントから検索