場景
學習spring-kafka
開源源碼的時候,發現每個目錄都有一個package-info.java
文件,查找其用法,並整理出來。
環境
軟件 | 版本 |
---|---|
spring-boot | 2.1.8.RELEASE |
spring-kafka | 2.2.8.RELEASE |
JDK | 8 |
intellij idea | 2019.1 |
正文
介紹
package-info.java
是一個Java
文件,可以放到任意Java
源碼包執行。不過裏面的內容有特定的要求,其主要目的是爲了提供包級別相關的操作,比如包級別的註解、註釋及公共變量。
用途
一、提供包級別的註解
介紹
在對應的源碼包提供包級別的註解
樣例
-
創建包註解
@Target(ElementType.PACKAGE) @Retention(RetentionPolicy.RUNTIME) public @interface TestPkg { }
-
在
package-info.java
添加註解@TestPkg package com.exercise.data_collection_error_info_transformation.component;
-
查看對應的包的註解
public class Client { public static void main(String[] args) throws ClassNotFoundException { // 查看包註解 String pkgName = "com.exercise.data_collection_error_info_transformation.component"; Package pkg = Package.getPackage(pkgName); Annotation[] annotations = pkg.getAnnotations(); for(Annotation an:annotations){ if(an instanceof TestPkg){ System.out.println("Hi,I'm the TestPkg"); } } // 查看包下面對應的類的註解 Class test = Class.forName("com.exercise.data_collection_error_info_transformation.component.Test"); Annotation[] annotations2 = test.getAnnotations(); for(Annotation an:annotations2){ if(an instanceof TestPkg){ System.out.println("Hi,I'm the Class TestPkg"); } } } }
結果如下,只輸出對應的包的註解,包內部的類是沒有該註解的。
Hi,I'm the TestPkg
-
Deprecated註解的使用
如果一整個包都是過時的話,可以直接在package-info.java
下面,添加註解@Deprecated
,表示該源碼包已過時。如圖:
二、提供包級別的變量
介紹
如果想在包裏面使用對應的變量,而不想讓其他包使用,就可以將變量放到package-info.java
下面,實現分包自用
的理念。
樣例
-
在
package-info.java
添加以下內容:/** * 包類 */ class PACKAGE_CLASS{ public void test(){ } } /** * 包常量 */ class PACKAGE_CONST{ public static final String TEST_01="TEST"; }
-
在包內的任意類調用包常量,未報錯:
public class Client { public static void main(String[] args) throws ClassNotFoundException { System.out.println(PACKAGE_CONST.TEST_01); } }
截圖如下:
-
在包外的任意類調用包常量,提示報錯:
public class Client { public static void main(String[] args) throws ClassNotFoundException { System.out.println(PACKAGE_CONST.TEST_01); } }
截圖如下:
三、提供包級別的註釋
介紹
使用JavaDoc
的時候,通過在package-info.java
添加註釋,生成JavaDoc
實現對應包的註釋說明。
樣例
-
添加對應的包的註釋
/** * 描述: Spring組件<br> * 項目名稱: data_collection_error_info_transformation <br> * 創建時間: 2020/5/6 12:59 <br> * 公司信息: 凱通科技股份有限公司 產品研發中心-大數據產品<br> * * @version v1.0 */ @TestPkg @Deprecated package com.exercise.data_collection_error_info_transformation.component;
-
生成對應的
JavaDoc
文檔,截圖如下:
點擊component
的鏈接,截圖如下:
總結
在學習開源源碼的時候,看到package-info.java
,不知道爲什麼,特意去找資料學習,並進行總結。當我們在學習開源源碼的時候,可以學習到很多東西,也在不斷地補充自己的知識盲區。不過,也要自己多記筆記,多問自己爲什麼,做到“知其所以然”,穩紮穩打。
隨緣求贊
如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注