我想在我的应用程序中使用FindBugs来检测空指针故障,我担心的是代码

public class Test
{

    public static void main(String[] args)
    {
        String nullStr = null;

        Person p = new Person();
        String mightBeNull = p.getAddress().getStreet();

        getString(mightBeNull);

        getString2(nullStr);
    }

    @NonNull
    static String getString(String street) {
        return street;
    }

    @NonNull
    static String getString2(String nullString) {
        return nullString;
        }
}


此代码肯定会导致空指针异常,因为人员内部的Address结构不会启动,但是带有@NonNull批注的FindBugs将仅检测getString2(nullStr)的第二种情况。如果它不支持这种情况,您可以参考其他一些可以在编译阶段检测到这种情况的工具吗?

最佳答案

尝试这个:

static String getString(@NonNull String street) {
    return street;
}


因为将@NonNull设置为方法的返回类型意味着结果永远不会是null。如果将@NonNull设置为方法的参数,则会说:参数不能为null

关于java - findbugs nonNull未找到所有案例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28831861/

10-11 02:41