Javaパッケージガイド

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]にあります。