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
- Guava之optional
- Guava之Optional
- 《Guava之Optional》
- guava使用系列之Optional
- guava Optional
- guava Optional
- Guava —— Optional
- guava Optional api使用
- Guava中的Optional实现
- Guava Optional 和 Java 8 optional
- guava学习笔记(2)--Optional
- Guava-Optional可空类型
- 【Java8】Guava——Optional
- Google Guava 使用Optional<T>
- Guava中的Optional来表达null
- [Guava源码日报](5)Optional分析
- Guava 避免null-Optional的使用方法
- Guava Optional类的使用【Guava学习笔记】
- 设置系统自带UIBarButtonItem
- Win7 中安装Theano及配置CUDA以搭建GPU加速环境
- Myeclipse2014黑色主题风格设置
- 关于网站嵌入【视频播放器】的规则和例子
- 纯虚函数 http://blog.chinaunix.net/uid-20585352-id-62720.html
- Guava之optional
- 敏捷宣言
- NYOJ-56 阶乘因式分解(一)
- LeetCode144——Binary Tree Preorder Traversal二叉树先序遍历
- 11.28 mac node-sublime text环境配置
- 在OC中怎样去查找一个字符串中有没有另外一个字符串
- fragment与activity及两个fragment之间的跳转实现
- mysql5.6新特性--transportable tablespace
- 上传图片显示缩略图,可上传多张