如何避免可能的空指针解除引用

时间:2014-11-27 11:15:32

标签: java nullpointerexception null null-pointer

我制作了一个简单的add方法,它有两个参数。 这是代码:

public List<myListType> add(List<myListType> myTypes, myListType myType) {
    if (myTypes == null) {
        myTypes = new ArrayList<myListType>();
    }

    int size = myTypes.size();

    if (size > 1) {

        Boolean lastStatus = myTypes.get(myTypes.size()-1).getAvailabilityStatus();

        Boolean secondLastElement = myTypes.get(myTypes.size() - 2).getAvailabilityStatus();
        if (lastStatus == null && secondLastElement == null) {
            myTypes.remove(myTypes.size()-1);
        }
        else if (lastStatus.equals(secondLastElement)) {

            myTypes.remove(myTypes.size()-1);
        }
    }

    myTypes.add(myType);

    return myTypes;
}

我认为在if条件下实际上可能存在空指针延迟,特别是在lastStatus上。为了避免这种情况,你能看到我能做些什么吗?

感谢。

1 个答案:

答案 0 :(得分:1)

假设您使用的是java 7+,可以使用Objects.equals,它可以处理您的条件:

Boolean secondLastElement = myTypes.get(myTypes.size() - 2).getAvailabilityStatus();
if (Objects.equals(lastStatus, secondLastElement)) {
    myTypes.remove(myTypes.size()-1);
}