Guava之optional

来源:互联网 发布:post json数据 编辑:程序博客网 时间:2024/05/22 11:54

开发过程中,经常会生成对象,但是绝大多数的时候,若返回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


0 0
原创粉丝点击