Java 方法调用时将引发NullPointerException
我有一个简单的方法:Java 方法调用时将引发NullPointerException,java,nullpointerexception,sonarqube,Java,Nullpointerexception,Sonarqube,我有一个简单的方法: public String getValue(String tag) { if (StringUtils.isBlank(tag)) { return null; } return tag.substring(tag.lastIndexOf('/') + 1).trim(); } 之后会这样调用: String tag = node.getNodeValue(); <-- from org.w3c.dom.Nod
public String getValue(String tag) {
if (StringUtils.isBlank(tag)) {
return null;
}
return tag.substring(tag.lastIndexOf('/') + 1).trim();
}
之后会这样调用:
String tag = node.getNodeValue(); <-- from org.w3c.dom.Node
String value = getValue(tag);
String price = getAttribute(param1, param2, getValue(value));
String tag=node.getNodeValue() 您收到此警告是因为以下行:
return null;
当tag
为空时,为什么要返回null
?我建议你这样做:
return tag;
或许
return "";
但是,您的函数仍然容易出现NullPointerException
,因为tag
可能是null
。为了避免出现NullPointerException
,我建议为您的函数实现以下功能:
public String getValue(String tag) {
if (tag != null) {
tag = tag.substring(tag.lastIndexOf('/') + 1).trim();
}
return tag;
}
如果字符串为null,则不能对其调用任何方法
trim方法将触发空指针异常:
return tag.substring(tag.lastIndexOf('/') + 1).trim();
请考虑为字符串使用可选选项:
它们不是等价的,如果tag=“”,则返回null或“”不是相同的内容。您确定不是生成NPE的getAttribute吗?可能是在警告您,对getValue的调用可能会返回null,而getAttribute将抛出getValueWell返回的null值,这是我的问题之一:我完全不知道:(好的,检查getAttribute函数,或者将其发布到这里我知道这不是问题的一部分,但是代码中有一个逻辑错误。String price=getAttribute(param1,param2,getValue(value));
应该是String price=getAttribute(param1,param2,value)
。虽然你的代码可以工作,但它做的比它需要做的更多。让我们说tag=“foo/bar”然后在第二行调用获取值后,值将是“bar”。然后当你获取价格时,你调用getValue(“bar”),它将返回“bar”,但为什么要浪费计算机的时间?这回答了你的问题吗?