开发过程中,经常会生成对象,但是绝大多数的时候,若返回null对象,就会抛出空指针异常。
例如在编写DAO层的底层是会开放一个接口:
/**
* 获得页面传递过来的组合条件
* @return
*/
public abstract List<Criterion> getCriterions(T entity);
/**
* 查询约束:
*根据Criterion条件创建Criteria.
*
* @param entity
* @return
*/
public Criteria createCriteria(T entity) {
List<Criterion> criterions = getCriterions(entity);
Criteria criteria = getCurrentSession().createCriteria(getEntityClass());
if(null != criterions) {
for (Criterion c : criterions) {
criteria.add(c);
}
return criteria;
}所有引用getCriterions(T entity);均要进行非空判断否则就报空指针异常。
看getCriterions(T entity);一个具体的实现
@Override
public List<Criterion> getCriterions(User entity) {
if(entity != null){
List<Criterion> criterions = new ArrayList<Criterion>();
if(StringUtils.isNotEmpty(entity.getName())){
criterions.add(getCriterionWithSQlRestriction("name",entity.getName()));
}
return criterions;
}
return null;
}
现在修改
public Criteria createCriteria(T entity) {
List<Criterion> criterions = Optional.fromNullable(getCriterions(entity)).or(new ArrayList<Criterion>());
Criteria criteria = getCurrentSession().createCriteria(getEntityClass());
for (Criterion c : criterions) {
criteria.add(c);
}
return criteria;
}
具体的例子可参考:Guava-Optional可空类型
API详细介绍:[Google Guava] 1.1-使用和避免null
本文介绍了一种利用Guava库中的Optional类来避免在Java开发中常见的空指针异常的方法。通过示例展示了如何在获取数据库查询条件时,安全地处理可能返回null的情况。
204

被折叠的 条评论
为什么被折叠?



