我寫了一個實現可比接口的類。我使用@NotNull
註釋來抑制方法參數中的waring。但它仍顯示警告。IDE自動導入此包com.sun.istack.internal.NotNull
爲@NotNull
。這是爲什麼呢?不使用此註釋如何刪除此警告?
我正在用java 8 SE使用Inteij Ultimate。 這是我的代碼片段。 爲什麼不@NotNull anotation刪除警告?
謝謝。
我寫了一個實現可比接口的類。我使用@NotNull
註釋來抑制方法參數中的waring。但它仍顯示警告。IDE自動導入此包com.sun.istack.internal.NotNull
爲@NotNull
。這是爲什麼呢?不使用此註釋如何刪除此警告?
我正在用java 8 SE使用Inteij Ultimate。 這是我的代碼片段。 爲什麼不@NotNull anotation刪除警告?
謝謝。
顯然,你應該使用
public int compareTo(@NonNull Node node) {
代替
public int compareTo(@NotNull Node node) {
編譯器可以判斷其中的代碼路徑可能會收到一個空值的情況下,而不必調試NullPointerException
。
對於這些註釋,你需要安裝Checker Framework。或者你可以嘗試其他答案所說的話。
不是Android的問題,即使IDE處於暗模式:) –
@uraimo哎呀,我在錯誤的標籤! xD我會改變它。 –
@uraimo編輯的定義/鏈接是更加相關的OP :) –
更改您的進口,您可以使用intellij自己的com.intellij.annotations.NotNull
,javax.annotation.Nonnull
或javax.validation.constraints.NotNull
。
這是一個IntelliJ功能,它實際上可以配置使用哪個可以爲空的/ notnull註釋,請參閱this guide。
如果這不能解決它,並且該消息似乎暗示了這一點,請嘗試刪除@override
,您將在超級類中沒有它的參數添加註釋。
嘗試在「compareTo」方法中添加@Nonnull(javax.annotation.Nonnull)。 –
正確,'javax.annotation.NonNull'是正確的。 –
@uraimo在'javax.annotation'包中我看不到任何註釋,如'NotNull'或'Nonnull'。當我試圖寫下'javax.annotation.NotNull'或'javax.annotation.Nonnull'時,發生錯誤。 – seal