2010-01-20 76 views

回答

40
  1. bnd tool(和行家束-插件)利用包註釋。將@Version和@Export註釋放在package-info.java中允許它生成OSGi元數據。
  2. javadoc使用包註釋。
  3. JAXB使用包級別註釋for example來指定將Java類型映射到程序包範圍內的XML Schema類型。包註釋也用在JBoss的xml綁定中。
  4. Struts 2 Convention插件使用an annotation爲包中的所有操作指定默認攔截器。
  5. 有一些包級別Hibernate Annotations。這些註釋的使用示例可以在here找到。
7

我認爲@Deprecated會有道理。如果整個軟件包是由非Java源代碼的某個工具生成的,可能類似@Generated。如果這個軟件包不是公共API的一部分,或者@Internal

也許OSGi工具(你需要聲明你的包的版本以及你依賴的包)也可以使用它。

有沒有人見過野外的人?我能想到的

4

兩個原因:

  • 註解特價套餐,讓某些方面(例如使用AspectJ)編織在它們的類的特定功能。
  • 註解某些工具要讀取的軟件包,例如源代碼,元數據或其他類型的資源生成。
+0

你是說註釋包相當於註釋內的所有課程一攬子包裝? – Gili 2010-01-20 14:41:36

+0

不,我的意思是你可以用它來表示該包中的整個類應該編織。 – 2010-01-20 15:05:00

+0

與我寫的有什麼不同? – Gili 2010-02-04 16:52:14

1

這不是真正的目的,但我使用它們作爲避免重新編譯package-info.java文件的解決方法。

問題是javac(和Ant任務<javac>)沒有爲package-info.java創建類文件,如果只有文檔(它們存在的原因)和package bla;語句,並且ant任務重新編譯每個文件沒有(或更舊)對應的文件。

在那裏添加虛擬註釋(如SuppressWarnings)會產生package-info.class,因此文件不會重新編譯,直到再次更改爲止。

(螞蟻1.8.0解決了這個通過創建一個空包info.class,即使沒有標註,但我使用的是舊ant這裏。)

2

JAXB例如允許most annotations是通常用於某種類型,同樣適用於包裝。這種情況下的含義是指定該包中所有類的默認值。

例如,如果你想在一個包中的所有類,都通過getter/setter方法暴露的所有屬性,在XML映射你可以在每個類指定@XmlAccessorType(XMLAccessType.PROPERTY)簡單地指定它在包裝上。

0

測試元數據 - 即測試包(元件測試或其他)的元數據。您可以在程序包級別設置適當的各種測試元數據,例如:特性,所有者,版本,錯誤/問題等。可以在類或方法級別對這些元素進行優化,但可以使用程序包級定義或缺省值爲簡潔起見可能會很方便。我已經利用了這種方法的一個變體(在註釋的好處之前)。

類似的觀點可以爲大約在同一各種各樣的事情廣義碼元進行:功能,所有權,缺陷,歷史信息等