我猜你指的實際上是@ParametersAreNonnullByDefault
註釋,考慮到谷歌不知道什麼註釋@ParametersAreNotNullByDefault
在所有。
這個註釋有一些文檔here,以及相關的SO問題(我相信或多或少可以回答你的問題)here。
使用註釋執行從JSR-305,下面的代碼:
@ParametersAreNonnullByDefault
public class NonnullTest
{
public static boolean parameterIsNull(Object o)
{
return (o == null);
}
public static void main(String[] args)
{
boolean str = parameterIsNull("foo");
boolean nul = parameterIsNull(null);
System.out.println("String returned: " + Boolean.toString(str));
System.out.println("null returned: " + Boolean.toString(nul));
}
}
編譯並沒有錯誤執行,並打印:
String returned: false
null returned: true
如此看來,此批註不積極防止null
值通過異常或其他方式傳遞,並且您仍然需要檢查您的參數是否無效。
這與我在JSR-305項目頁面上閱讀的內容一致,這似乎表明它添加的註釋點是靜態代碼分析。
但它確實檢查爲空? – Phoenix
我已經用一個簡單的測試用例更新了我的答案,以證明它並未實際檢查空值。 – CmdrMoozy
哦老鼠......如果我使用JetBrains的NotNull,它會拋出一個異常,如果它違反了條件,但如果我使用標準Nonnull(或ParametersAreNonnullByDefault)它不會。即使IDEA允許我配置要使用的註釋,但它似乎只能用於檢查自己的註釋。 :( – Trejkaz