optional小结

java8使用Optional实现优美的npe判断

1、optional是那种初始化方法

//空的optional对象

Optional empty =Optional.empty();

//不为null的optional对象

Optional str = Optional.of("hello world");

//可以为null的optional对象

Optional nullable = Optional.ofNullable(null);

2、使用optional.orElse可以实现兜底值

KeyValue kv = new KeyValue("keyi","hahha");

Optional kvOption =Optional.ofNullable(kv);

Optional key =kvOption.map(KeyValue::getKey);

System.out.println(key.orElse("123"));

如果kv == null ---> key.orElse("123") == "123"

如果kv != null ---> key.orElse("123") == "keyi"

2.1使用orElseGet接收实现Supplier接口的方法

KeyValue kv = null;

Optional kvOption =Optional.ofNullable(kv);

Optional key =kvOption.map(KeyValue::getKey);

System.out.println(key.orElseGet((Supplier) ()-> "fuck"));

这个时候就会输出一个fuck

2.2使用orElseThrow抛出异常

KeyValue kv = null;

Optional kvOption =Optional.ofNullable(kv);

Optional key =kvOption.map(KeyValue::getKey);

System.out.println(key.orElseThrow((Supplier) ()->{throw new IllegalArgumentException("KeyValue not null");

}));

抛出:

2.3使用ifPresent,可以接收一个Consumer的接口

java npe风险_java如何优雅的避免npe判定相关推荐

  1. java npe风险_NPE(java.lang.NullPointerException)防范

    我们程序中NPE还是比较多的,下面介绍良好的编码规范防止NPE的发生 NPE(java.lang.NullPointerException): 空指针异常 一.[推荐]防止 NPE,是程序员的基本修养 ...

  2. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  3. Java枚举:您拥有优雅,优雅和力量,这就是我所爱!

    当Java 8即将面世时,您确定您对Java 5中引入的枚举很了解吗? Java枚举仍然被低估了,很可惜,因为它们比您想象的要有用,它们不仅仅用于通常的枚举常量! Java枚举是多态的 Java枚举是 ...

  4. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  5. 计算机毕业设计Java保险公司风险测评管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java保险公司风险测评管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java保险公司风险测评管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...

  6. 基于JAVA保险公司风险测评管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA保险公司风险测评管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA保险公司风险测评管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. java异常面试_java中异常的面试

    https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...

  8. JAVA保险公司风险测评管理系统计算机毕业设计Mybatis+系统+数据库+调试部署

    JAVA保险公司风险测评管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 JAVA保险公司风险测评管理系统计算机毕业设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B ...

  9. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

最新文章

  1. 400万奖金池,倪光南、邓中翰等顶级学者指导,大手笔芯片比赛邀你参与
  2. androidHandler讲解
  3. 【必看】Linux 下的 TCP参数优化
  4. sublime text3 按F5运行python代码
  5. 洛谷P5664:Emiya 家今天的饭(容斥、dp)
  6. 关于 C语言的 按位取反 ~
  7. 作者:王楠,博士,就职于郑州商品交易所期货及衍生品研究所有限公司。
  8. 【Elasticsearch】使用 Elasticsearch Painless 脚本以递归方式遍历 JSON 字段
  9. c语言次幂如何表达_如何确保分布式场景下的并发幂等性?
  10. 关于SQL语言的优化(Oracle)
  11. 基于slicer开发(简化功能与插件开发)
  12. RDKit | 基于RDKit 的化合物预处理
  13. MATLAB和C语言的区别
  14. 《软件设计师教程最新版(第三版》
  15. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第一章 课后答案
  16. 淘宝客淘点金代码自动生成跳转
  17. 12000字解读元气森林:套利与降维的游戏
  18. vue中使用bootstrap4踩坑之旅
  19. HackTheBox-baby todo or not todo
  20. [JAVA毕业设计]二手车交易平台源码获取和系统演示

热门文章

  1. 笔记本电脑计算机配置,笔记本配置怎么看,详细教您怎么查看笔记本电脑的配置...
  2. 让皮肤美白水嫩的水果! - 生活至上,美容至尚!
  3. 苹果考虑开发大于12.9英寸iPad,并带有玻璃后盖
  4. i3 1315U和i5 1340p差多少 酷睿i31315U和i51340p对比
  5. 安卓手机字体修改教程
  6. (十一)Server-side request forgery (SSRF)
  7. 笔记本电脑是一种中小型计算机,综合分析各种笔记本电脑配置性能,让你选择自己需要的产品...
  8. 数据库concat函数
  9. postman 数据流请求
  10. 微信公众号开发接收语音消息时权限