我是靠谱客的博主 曾经手机,最近开发中收集的这篇文章主要介绍高效处理NPE(空指针)异常的方法(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

上篇文章中我们提到了空指针异常以及利用Optional类处理空指针异常的几个方法,现在我们继续说下Optional类剩下的几个常用方法。

1 、Optional.map()方法(对象进行二次包装)

map()方法将对应的funcation函数式接口中的对象进行二次运算,封装成新的对象后将新的对象返回在Optional中。

 简单实例

 对值进行处理,如果有值,返回处理后的Optional,如果无值则返回Optional.empty()

1.1、Optional.flatMap()方法

flatMap()方法和map()方法基本一样,不同的是map方法的函数返回可以是任意类型,而flatMap方法的函数返回必须是Optional类型。

 简单实例

 

1.2、Optional.orElse()方法(为空返回对象)

orElse()方法也是Optional类的常用方法之一,该方法的大致含义是如果包装对象为空,就执行roElse方法里的value,如果非空,则返回写入的对象。

简单实例

 

 这里返回的值是  李四

这里返回的值是   张三

同时orElse方法可以和map方法一起使用

如果传入的对象为空,则返回orElse方法中的内容,如果传入的对象不为空,直接返回对象的属性值。

1.3、Optional.orElseGet()方法(为空返回Supplier对象)

orElseGet()方法与orElse()方法非常相似,但入参不一样,入参为Supplier对象,为空返回传入对象的 .get()方法,非空则返回当前对象。

Supplier 是一个接口,是类似Spring的懒加载,声明之后并不会占用内存,只有执行了get()方法后,才会调用构造方法创建出对象。Supplier语法创建对象:

Supplier<Person> supPerson = Person::new

 简单实例

 返回值为  张三

1.4、Optional.orElseThrow()方法(为空返回异常)

该方法的作用是对象为空时,抛出异常,如果对象不为空,则返回当前对象。

简单实例

 返回值为   张三

返回的是异常 

2、jdk1.9 对Optional类的优化

在jdk1.9中,Optional类增加了三个方法,分别是 or() 、ifPresentOrElse() 、stream()

  • or()方法与orElse()方法相似,如果对象不为空,返回对象,如果对象为空则返回 or()方法中设置的值。
  • ifPresentOrElse()方法中存在两个参数:Consumer  和  Runnable。如果对象不为空,会执行Consumer 的动作,如果对象为空,执行Runnable。它相比于ifPresent来说,多了一个OrElse判断。
  • stream()方法将Optional转换成stream,如果有值就返回包含值的stream对象,如果没有值,就返回空的stream对象。

 

 

 

 

最后

以上就是曾经手机为你收集整理的高效处理NPE(空指针)异常的方法(二)的全部内容,希望文章能够帮你解决高效处理NPE(空指针)异常的方法(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(164)

评论列表共有 0 条评论

立即
投稿
返回
顶部