我目前在以下代码中得到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/