我想在我的应用程序中使用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/