我一直在使用方法上的@Nonnull和@Nullable註釋來給其他程序員(以及我自己!)關於方法可以返回的線索。我終於決定實際上在一個類上運行Findbugs(IntelliJ - FindBugs-IDEA v1.0.1),我不明白我看到的行爲。文件也沒有幫助。爲什麼findbugs會爲一種方法提供冗餘的空檢查,而不是其他方法
比方說,我有以下示例代碼:
import javax.annotation.Nonnull;
public class Main {
public static void main(String[] args) {
}
@Nonnull
public static String myFunc(){
return new String("foo");
}
@Nonnull
public static String myFunc2(){
return "foo";
}
}
FindBugs的標誌myFunc的()的返回語句具有‘已知非空值冗餘nullcheck’,但很高興與myfunc2所( )。
預計findbugs會看到這些不同嗎? (鏈接到文檔將不勝感激)我完全誤解@Nonnull方法的使用?
[編輯]
經過一番研究,我已經決定,org.jetbrains @Contract註釋(合同違規變更爲錯誤)將更好地滿足我的需求。謝謝Guillaume F.的幫助!
也不能爲null,但它基本上將沒有必要使用'新的String( 「字符串常量」) '。 –
顯然。它只是比我的實際代碼更簡單的例子。 –
但是這聽起來像是在省略相關細節:它們是否是字符串,允許您使用字符串文字;或者他們是別的東西? –