equals变量在前面和后面的问题
String is_cache = portService.findIscacheById(port.getId());
if(is_cache.equals("0")){
oracleStoreRepository.insertLocalChain (port, params, allParams, result,Boolean.valueOf(repositoryChainOn));
}else{
return;
}
今天在测试的时候遇到了这个问题。报了空指针异常。经过了一番查找之后找到了问题所在,决定记录下来。
问题原因是我的is_cache可能为null,如果is_cache为null,String对象就是一个空对象,空对象没有equals方法,所以就会报空指针异常。如果将代码改为下面这种方式就可以避免空指针异常。
String is_cache = portService.findIscacheById(port.getId());
if( !"0".equals(is_cache)){
oracleStoreRepository.insertLocalChain (port, params, allParams, result,Boolean.valueOf(repositoryChainOn));
}else{
return;
}
为了避免这个坑,我在网上查到还有另外一个解决方法。使用org.apache.commons.lang包下的StringUtils.equals(String str1, String str2)方法
源码为:
public static boolean equals(String str1 ,String str2){
return str1 != null ? str1.equals(str2) : str2 == null;
}