package-info.java文件

1.概述

在本教程中,我們將了解package-info.java的用途及其有用性。簡而言之, package-info是一個Java文件,可以將其添加到任何Java package中

2. package-info

package-info.java文件當前有兩個用途:

  • 包級文檔的地方
  • 程序包級註解annotation的目錄

除上述內容外,還可以根據需要擴展用例。將來,如果需要添加任何程序包級功能,則此文件將是理想的選擇。

讓我們詳細研究當前用例。

3.Package文件

在Java版本5之前,與包相關的文檔放置在HTML文件package.html 。這只是一個普通的HTML文件,其中Javadoc註釋位於body標籤內。

隨著JDK 5的出現, package.html被一個新選項package-info.java取代, package.html ,現在它更受歡迎。

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:

package-info.java文件

因此,就像我們在其他地方編寫Javadoc一樣,我們可以將程序包Javadoc放在Java源文件中。

4.包註解

假設我們必須對整個包應用註釋。在這種情況下, package-info.java可以為我們提供幫助。

考慮一種情況,默認情況下我們需要將字段,參數和返回值聲明為非空。我們可以通過簡單地為非null參數和返回值添加@NonNullApi 以及package-info.java文件中用於非null字段@NonNullFields .

@NonNullFields@NonNullApi會將字段,參數和返回值標記為非null,除非將它們顯式標記為@Nullable

@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

package-info.java文件

Eclipse的New Java Package選項允許我們生成package-info.java

package-info.java文件

上面的方法也適用於現有的程序包。選擇現有的軟件包, New-> Package選項,然後勾選Create package-info.java選項。

在我們的項目編碼指南中package-info.java包括在內始終是一個好習慣。諸如SonarCheckstyle之類的工具可以幫助實現這一目標。

六,結論

HTML和Java文件用法之間的主要區別在於,對於Java文件,我們還有使用Java註釋的可能性。因此, package-info java文件不僅是Javadoc軟件包的宿主,而且是整個軟件包的註釋。同樣,將來可以擴展此用例列表。