写写java中的optional
当我们写代码的时候经常会碰见nullpointer,所以在很多情况下我们需要做各种非空的判断。JDK8中引入了optional,他是一个包装好的类,我们可以把对象传入optional对象中,接下来就可以在optional中进行安全的消费
一般使用的都是optional的方法ofNullable,这样当对象为null的时候会顺利执行
举一个简单的例子
String a="null";
//把a封装至optional中
Optional<String> optionala=Optional.ofNullable(a);
//消费对象
optionala.ifPresent(x-> System.out.println(x));
这里推荐使用ofNullable,不推荐使用of,文档中介绍如果使用of并且空值的话会抛出 NoSuchElementException – 如果不存在任何值
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
还推荐使用orElseGet与orElseThrow,如果存在默认值且value为空则会直接返回默认值,当然两者都为空的时候还是会抛出错误
public T orElseGet(Supplier<? extends T> other) {
return value != null ? value : other.get();
}
使用例子
String a="null";
Optional<String> optionala=Optional.ofNullable(a);
a = optionala.orElseGet(() -> "abc");
System.out.println(a);
a = optionala.orElseThrow(()->new RuntimeException("a为空"));
optional也可以像stream一样有中间操作:过滤filter,map
写写java中的optional的更多相关文章
- map和flatmap的区别+理解、学习与使用 Java 中的 Optional
转自:map和flatmap的区别 对于stream, 两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...
- 理解、学习与使用 Java 中的 Optional
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) -- 每个 Java 程序员都 ...
- 理解、学习与使用 JAVA 中的 OPTIONAL<转>
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- 理解、学习与使用 JAVA 中的 Optional【转载】
这是一篇转载的文章.刚学java的时候看了好久这个Optional,但一直是懵的.今天又又遇到了,重新回来再看的时候,发现并没有那么难道那个. 转载的文章再开头处写了一个对于理解Optional很关键 ...
- JAVA 中的Optional (臭名昭著的空指针异常(NullPointerException))
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) -- 每个 Java 程序员都 ...
- 理解、学习与使用Java中的Optional
从Java8 引入的一个很有趣的特性是Optional类.Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异 ...
- Java中的Optional
在我们日常的开发中,我们经常会遇到 NullPointerException.如何才能优雅的处理NPE?这里告诉大家一个较为流行的方法 java.util.Optional 使用Optional来修饰 ...
- Java中Optional类的使用
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- Java中的多线程你只要看这一篇就够了
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 引 如果对什么是线程.什么是进程仍存有疑惑, ...
- Java中的反射和注解
前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...
随机推荐
- React 的 KeepAlive 探索
什么是 KeepAlive? 用过 Vue 的童鞋都知道 Vue 官方自带了 Keep-Alive 组件,它能够使组件在切换时仍能保留原有的状态信息,并且有专门的生命周期方便去做额外的处理.该组件在很 ...
- NumPy 均匀分布模拟及 Seaborn 可视化教程
均匀分布 简介 均匀分布是一种连续概率分布,表示在指定范围内的所有事件具有相等的发生概率.它常用于模拟随机事件,例如生成随机数或选择随机样本. 参数 均匀分布用两个参数来定义: a:下限,表示分布的最 ...
- Swift Lazy计算属性的线程安全分析
一.代码示例 // // ViewController.swift // LazyTest // // Created by lilun.ios on 2021/7/30. // import UIK ...
- exception EXC_RESOURCE - WAKEUPS 分析(二)
一.问题: 直播助手在使用ReplayKit2 Extension的过程中,ReplayKit2的Upload进程工作在后台模式,苹果对处于后台的进程进行了内存和CPU资源的限制. 对于内存: 每种E ...
- NOIP模拟91(多校24)
T1 破门而入 解题思路 签到题(然而我数组开小直接变成暴力分...) 发现其实就是第一类斯特林数,然后 \(n^2\) 推就好了. 感觉可以用 NTT 优化成 \(nlogn\) ,但是好像并没有什 ...
- Dva.js 快速上手指南
先说些废话 最近在开发React技术栈的项目产品,对于数据状态的管理使用了Dva.js,作为一个资深的ow玩家,我看到这个名字第一反应就是----这不是ow里的一个女英雄吗?仔细阅读了官方文档之后,发 ...
- 推荐十个优秀的ASP.NET Core第三方中间件,你用过几个?
ASP.NET Core 作为一个强大的.跨平台的.高性能的开源框架,为开发者提供了丰富的功能和灵活的扩展性.其中,中间件(Middleware)是 ASP.NET Core 架构中的核心组件之一,它 ...
- 在MySQL中INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别?
我们有两张表: TableA:id firstName lastName.......................................1 aru ...
- Excel表格Vlookup跨sheet取值,ISNA函数处理匹配不到的空字符串
Excel表格Vlookup跨sheet取值 =VLOOKUP($A2,Sheet2!$A$2:$D$15,2,FALSE) $A2 代表当前的Sheet1的单元格,数据类型需要与查找的单元格字段类型 ...
- ESP8266串口WiFi模块 - WiFi杀手
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` ESP8266串口WiFi模块 - WiFi杀手 日期:2 ...