您的位置:首页 > 运维架构

Guava之optional

2015-11-28 15:01 369 查看
开发过程中,经常会生成对象,但是绝大多数的时候,若返回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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: