我目前在以下代码中得到NullPointerException。

else if (isEmpty(href))
    System.err.println("This is an empty link: " + href);


isEmpty函数如下。

public boolean isEmpty(String HREF){
    if (HREF.equals("") || HREF.equals("null") || HREF == null || HREF.isEmpty())
        return true;
    else
        return false;
}


是因为我无法将字符串比较为null吗?我该怎么做才能使此功能起作用?

最佳答案

您的isEmpty测试只是以错误的顺序进行操作。更改此:

if (HREF.equals("") || HREF.equals("null") || HREF == null || HREF.isEmpty())
    return true;


至:

if (HREF == null || HREF.equals("") || HREF.equals("null") || HREF.isEmpty())
    return true;


如果HREF实际上是null,则第一个测试将 if short-circuit,并且您不会获得NPE。

(顺便说一句,显式测试HREF.equals("")并调用HREF.isEmpty()是多余的。您只需要做一个或另一个即可。)

顺便提一下,我建议您将样式简化为单个return语句:

public boolean isEmpty(String HREF){
    return HREF == null || HREF.isEmpty()) || HREF.equals("null");
}


(另外,如果尝试对字符串"null"进行测试以检查null值,则也可以删除该条件。实际上,您可以使用类似Apache Commons的StringUtils.isEmpty(CharSequence)方法的方法来进行操作你要。)

关于java - Java if语句中的NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31591556/

10-11 17:10