vit*_*aly 43 java annotations static-analysis findbugs
两者有什么区别?两者似乎都意味着该值可以为null并且应该相应地处理,即检查为null.
更新: 上面的两个注释是JSR-305/FindBugs的一部分:http: //findbugs.sourceforge.net/manual/annotations.html
lba*_*scs 31
我认为从您添加的链接中可以清楚地看到:如果您使用@CheckForNull并且使用该值的代码未检查null,则FindBugs会将其显示为错误.
FindBugs会忽略@Nullable.
实际上,此注释仅用于覆盖总体
NonNull注释.
@CheckForNull在必须始终检查值的情况下使用.利用@Nullable其中null可能确定.
编辑:目前似乎@CheckForNull没有得到很好的支持,所以我建议避免使用它@NonNull(也可以看看我应该使用哪种@NotNull Java注释?).另一个想法是直接与FindBugs开发人员取得联系,并询问他们对文档中不一致的看法.
Ale*_*lov 10
@Nonnull并@Nullable通过IntelliJ IDEA的正确处理.FindBugs发现了问题,@Nonnull但错过了那些@Nullable和@CheckForNUll.IDEA和FindBugs检测到的问题都标有注释.
package com.db.icestation;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class test {
    @Nullable public String nullable() {
        return "";
    }
    @Nonnull public String nonnull() {
        return null; // IDEA, findbugs
    }
    @CheckForNull public String checkForNull() {
        return null;
    }
    public static void main(String[] args) {
        System.out.println(new test().nullable().length()); // IDEA
        System.out.println(new test().nonnull().length());
        System.out.println(new test().checkForNull().length());
    }
}
在 IntelliJ Idea 中,@javax.annotation.Nullable默认情况下受支持,任何取消引用@Nullable参数或返回值的尝试都将导致警告。
@alexander-pavlov,您可以添加@javax.annotation.CheckForNull“恒定条件和例外”检查的配置。转到文件->设置->检查->可能的错误->恒定条件和异常->配置注释。
我更喜欢这样做,因为它比 @lbalazscs 在上面的回答中提到的@CheckForNull意义更明确。@Nullable
| 归档时间: | 
 | 
| 查看次数: | 59959 次 | 
| 最近记录: |