1. 概要

このチュートリアルでは、package-info。javaの目的とその有用性を理解します。 簡単に言うと、 package-infoJavaファイルであり、任意のJavaパッケージに追加できます。

2. package-infoの目的

package-info.java ファイルは現在、次の2つの目的を果たします。

  • パッケージレベルのドキュメントの場所
  • パッケージレベルの注釈のホーム

上記以外にも、必要に応じてユースケースを拡張することができます。 将来、パッケージレベルの機能を追加する必要がある場合、このファイルは最適な場所になります。

現在のユースケースを詳しく調べてみましょう。

3. パッケージドキュメント

Javaバージョン5より前では、パッケージに関連するドキュメントはHTMLファイルpackage.htmlに配置されていました。 これは、bodyタグ内にJavadocコメントが配置された通常のHTMLファイルです。

JDK 5 が登場すると、 package.htmlは、 package.html よりも優先される新しいオプションpackage-info.java、に取って代わられました。 。

package-info。javaファイルのパッケージドキュメントの例を見てみましょう。

/**
 * This module is about impact of the final keyword on performance
 * <p>
 * This module explores  if there are any performance benefits from
 * using the final keyword in our code. This module examines the performance
 * implications of using final on a variable, method, and class level.
 * </p>
 *
 * @since 1.0
 * @author baeldung
 * @version 1.1
 */
package com.baeldung.finalkeyword;

上記のpackage-info.javaは、Javadocを生成します。

したがって、他の場所でJavadocを作成するのと同じように、パッケージJavadocをJavaソースファイルに配置できます。

4. パッケージの注釈

パッケージ全体に注釈を適用する必要があるとします。 この場合、package-info.javaが役に立ちます。

フィールド、パラメーター、および戻り値をデフォルトでnull以外として宣言する必要がある状況を考えてみます。 この目標を達成するには、null以外のパラメーターと戻り値の @NonNullApi アノテーション、null以外のフィールドのおよび@NonNullFieldsアノテーションを含めるだけです。 package-info.javaファイルにあります

@NonNullFieldsおよび@NonNullApiは、 @Nullable として明示的にマークされていない限り、フィールド、パラメーター、および戻り値を非nullとしてマークします。

@NonNullApi
@NonNullFields
package com.baeldung.nullibility;

import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;

パッケージレベルで使用できるさまざまな注釈があります。 たとえば、Hibernateプロジェクトには、アノテーションのカテゴリがあり、JAXBプロジェクトにもパッケージレベルのアノテーションがあります。

5. package-infoファイルの作成方法

package-info ファイルの作成は非常に簡単です。手動で作成するか、IDEのヘルプを参照して同じファイルを生成できます。

IntelliJ IDEAでは、パッケージを右クリックして New->package-info.javaを選択できます。

Eclipseの新しいJavaパッケージオプションを使用すると、package-infoを生成できます。java

上記の方法は、既存のパッケージでも機能します。 既存のパッケージの新規->パッケージオプションを選択し、パッケージの作成-info.javaオプションにチェックマークを付けます。

プロジェクトのコーディングガイドラインにpackage-info。javaを必須に含めることは常に良い習慣です。 SonarCheckstyleなどのツールは、これを実現するのに役立ちます。

6. 結論

HTMLファイルとJavaファイルの使用法の主な違いは、Javaファイルを使用すると、Javaアノテーションを使用できる可能性が追加されることです。 したがって、 package-info java ファイルは、パッケージJava docs ホームであるだけでなく、パッケージ全体の注釈でもあります。 また、このユースケースのリストは将来拡張される可能性があります

いつものように、コードはGitHubから入手できます。