在 Java 中强化 Null 取消引用

Fortify Null Dereference in Java

我得到了 Fortify 的调查结果,并且得到了一个空的取消引用。我想我知道为什么我得到它,只是想知道什么是解决问题的最佳方法。这是一个代码片段:

public class Example{
    private Collection<Auth> Authorities;
    public Example(SomeUser user){
        for(String role: user.getAuth()){ //This is where Fortify gives me a null dereference
            Authorities.add(new Auth(role));
        }
    }

    private List<String> getAuth(){
        return null;
    }
}

getAuth()不应该returnnull。根据惯例 returning List 的方法永远不会 return null 而是一个空列表作为默认的“空”值。

private List<String> getAuth(){
    return new ArrayList<>();
}

java.util.Collections.emptyList() 只应使用,如果您确定该方法的每个调用者都不会更改列表(不尝试添加任何项目),因为这将在这个不可修改的列表上失败。只遍历列表就可以了。
如果你能保证这一点,那么空列表就更好了,因为它不会一直创建新对象。