1.はじめに

このクイックチュートリアルでは、Javaのパッケージの基本について説明します。

パッケージを作成し、その中に配置されている型にアクセスする方法を説明します。

命名規則と、それが基礎となるディレクトリ構造とどのように関連するかについても説明します。

最後に、パッケージ化されたJavaクラスをコンパイルして実行します。

2. Javaパッケージの概要

Javaでは、パッケージを使用して、関連するクラス、インタフェース、およびサブパッケージをグループ化します。

これを行うことの主な利点は以下のとおりです。

  • 関連する型を見つけやすくする – パッケージは通常型を含む

論理的に関連している
** 名前の衝突を避ける – パッケージは私たちが独自にするのを助けるでしょう

クラスを識別するたとえば、

com.baeldung.Application、

、および

com.example.Application

クラス
** アクセス制御 – 可視性とタイプへのアクセスを制御することができます。

パッケージとhttps://www.baeldung.com/java-access-modifiers[access modifiers]の組み合わせ

次に、Javaパッケージを作成して使用する方法を見てみましょう。

3.パッケージを作成する

パッケージを作成するには、**

package

ステートメントをファイルのコードの最初の行として追加して使用する必要があります。

__com.baeldung.packagesという名前のパッケージに型を入れましょう。

package com.baeldung.packages;

  • 型を定義してそれらをパッケージに入れない場合、それらは

    default

    または名前なしのパッケージに入れられます。これでは、パッケージ構造を使用する利点がなくなり、他のパッケージからこれらのタイプにアクセスすることはできなくなります。

3.1. 命名規則

同じ名前のパッケージを避けるために、いくつかの命名規則に従います。

  • パッケージ名はすべて小文字で定義します**

  • パッケージ名はピリオドで区切られています

  • 名前は** 作成する会社または組織によっても決定されます。

それら**

組織に基づいてパッケージ名を決定するには、通常、会社のURLを逆にすることから始めます。その後、命名規則は会社によって定義され、部門名とプロジェクト名を含めることができます。

たとえば、

www.baeldung.com

からパッケージを作成するには、逆にします。

com.baeldung

その後、

com.baeldung.packages



com.baeldung.packages.domain.

のように、これのサブパッケージをさらに定義できます。

3.2. ディレクトリ構造

Javaのパッケージはディレクトリ構造に対応しています。

  • それぞれのパッケージとサブパッケージはそれ自身のディレクトリを持っています** だから、

    com.baeldung.packages

    パッケージのために、我々は

    com – > baeldung – > packages

    のディレクトリ構造を持つべきです。

ほとんどのIDEは、パッケージ名に基づいてこのディレクトリ構造を作成するのに役立ちますので、手動で作成する必要はありません。

4.パッケージメンバーの使い方


domain

という名前のサブパッケージにクラス

TodoItem

を定義することから始めましょう。

package com.baeldung.packages.domain;

public class TodoItem {
    private Long id;
    private String description;

   //standard getters and setters

}

4.1. 輸入

別のパッケージのクラスから

TodoItem

クラスを使用するには、それをインポートする必要があります。インポートされたら、名前でアクセスできます。

パッケージから単一の型をインポートすることも、アスタリスクを使用してパッケージ内のすべての型をインポートすることもできます。


domain

サブパッケージ全体をインポートしましょう。

import com.baeldung.packages.domain.** ;

それでは、

TodoItem

クラスだけをインポートしましょう。

import com.baeldung.packages.domain.TodoItem;

JDKやその他のJavaライブラリにも独自のパッケージが付属しています。プロジェクトで使用したい既存のクラスを同じ方法でインポートできます。

たとえば、Javaコアの

List

インターフェースと

ArrayList

クラスをインポートしましょう。

import java.util.ArrayList;
import java.util.List;

  • その後、単純にそれらの名前を使用することによって、アプリケーションでこれらの型を使用できます。

public class TodoList {

    private List<TodoItem> todoItems;

    public void addTodoItem(TodoItem todoItem) {
        if (todoItems == null) {
            todoItems = new ArrayList<TodoItem>();
        }
        todoItems.add(todoItem);
    }
}

ここでは、新しいクラスとJavaコアクラスを使用して、

List

of

ToDoItems.

を作成しました。

4.2. 完全修飾名

時には、異なるパッケージから同じ名前の2つのクラスを使っているかもしれません。たとえば、

java.sql.Date



java.util.Date

の両方を使用しているとします。 ** 名前の衝突が発生した場合は、少なくとも1つのクラスに完全修飾クラス名を使用する必要があります。

完全修飾名で

TodoItem

を使用しましょう。

public class TodoList {
    private List<com.baeldung.packages.domain.TodoItem> todoItems;

    public void addTodoItem(com.baeldung.packages.domain.TodoItem todoItem) {
        if (todoItems == null) {
            todoItems = new ArrayList<com.baeldung.packages.domain.TodoItem>();
        }

        todoItems.add(todoItem);
    }

   //standard getters and setters

}

5.

javac

でコンパイルする

パッケージ化されたクラスをコンパイルする時が来たら、ディレクトリ構造を覚えておく必要があります。ソースフォルダから始めて、ファイルの場所を

javac

に指示する必要があります。


TodoList

クラスはそれに依存しているため、最初に

TodoItem

クラスをコンパイルする必要があります。

まずはコマンドラインやターミナルを開いてソースディレクトリに移動しましょう。

それでは、

com.baeldung.packages.domain.TodoItem

クラスをコンパイルしましょう。

> javac com/baeldung/packages/domain/TodoItem.java

クラスが正しくコンパイルされた場合、エラーメッセージは表示されず、

TodoItem.class

ファイルが

com/baeldung/packages/domain

ディレクトリに表示されます。

他のパッケージの型を参照する型の場合は、

-classpath

フラグを使用して

javac

コマンドに他のコンパイル済みクラスの場所を指示する必要があります。


TodoItem

クラスがコンパイルされたので、

TodoList

クラスと

TodoApp

クラスをコンパイルできます。

>javac -classpath . com/baeldung/packages/** .java

繰り返しますが、エラーメッセージは表示されず、

com/baeldung/packages

ディレクトリに2つのクラスファイルがあります。


TodoApp

クラスの完全修飾名を使用してアプリケーションを実行しましょう。

>java com.baeldung.packages.TodoApp

出力は次のようになります。https://www.baeldung.com/uploads/java

packages

output.jpg[]

6.まとめ

この短い記事では、パッケージとは何か、そしてなぜそれらを使うべきかを学びました。

命名規則と、パッケージとディレクトリ構造との関係について説明しました。パッケージの作成方法と使い方も見ました。

最後に、

javac

および

java

コマンドを使用して、パッケージを使用してアプリケーションをコンパイルおよび実行する方法について説明しました。

完全なサンプルコードはhttps://github.com/eugenp/tutorials/tree/master/core-java-lang[over on GitHub]にあります。