Guava之optional
2015-11-28 15:01
369 查看
开发过程中,经常会生成对象,但是绝大多数的时候,若返回null对象,就会抛出空指针异常。
例如在编写DAO层的底层是会开放一个接口:
看getCriterions(T entity);一个具体的实现
现在修改
具体的例子可参考:Guava-Optional可空类型
API详细介绍:[Google Guava] 1.1-使用和避免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
相关文章推荐
- Linux系统中.bz2与.gz文件的区别
- 实验1 熟悉Linux开发环境 实验报告
- RadioButton之drawableTop及drawablePadding属性详解
- Linux中profile、bashrc、bash_profile之间的区别和联系
- shell脚本编程流水笔记
- Linux NFS服务器的安装与配置
- 关于网站嵌入【视频播放器】的规则和例子
- Ubuntu下JDK+Tomcat+MySql环境的搭建
- OpenMP并行加速笛卡尔乘积
- OpenMP并行加速笛卡尔乘积
- linux 系统睡眠.休眠命令
- CentOS 6.5 安装使用iSCSI-Target
- 警告:MySQL-server-5.5.46-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
- Nginx (一) 基础入门
- Linux下DIR,dirent,stat等结构体详解
- Android项目重构之路:架构篇
- Hadoop-Drill深度剖析
- OpenCV Open Camera 打开摄像头
- nyoj 349 Sorting It All Out 【topo】
- 第十五天-linux系统文件权限详细讲解