我的問題是this one的後續行動。默認情況下如何指示成員字段爲@Nonnull?
在FindBugs的過去的版本中,可以使用@DefaultAnnotation(Nonnull.class)
或@DefaultAnnotationForFields(Nonnull.class)
表明,所有領域在包裝應@Nonnull
處理。在當前版本的FindBugs(2.0)中,@DefaultAnnotation
和@DefaultAnnotationForFields
已被棄用,我們應該全部使用JSR-305。但JSR-305似乎無法覆蓋FindBugs註釋所包含的所有內容。
的javadoc確實表明了一些備選方案:
@ParametersAreNonnullByDefault
。這(顯然)只適用於參數,而不適用於成員字段。@CheckReturnValue
,當應用於類型或包。同樣,這不適用於成員字段。@TypeQualifierDefault
。也許這可以做我想做的,但我不明白它是如何工作的,除了一些神祕的javadoc之外,我無法找到任何有關其用法或意圖的文檔或示例。我認爲它會幫助我創建自己的註釋,但是我能確定所有的工具(FindBugs,Eclipse等)都能正確解釋這個新的註釋(或者甚至可以)嗎?
javadoc沒有提供關於如何處理其棄用的任何提示。
因此,使用當前版本的FindBugs和/或JSR-305,我應該如何指示某個包中的所有成員字段(或者甚至某個類)都應該被視爲@Nonnull
?它甚至有可能嗎?
啊,所以訣竅是定義自己的註釋。我想這是更多的可擴展性,但我不明白爲什麼他們不能像對待ParametersAreNonnullByDefault一樣爲這種情況製作標準註釋。 – jqno 2012-08-06 07:31:50
請注意,您在自定義註釋中爲'Nonnull'使用了不同的大寫字母,而不是JSR-305中可能引起混淆的大寫字母。 – 2012-09-20 21:03:21