失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 高效处理NPE(空指针)异常的方法(一)

高效处理NPE(空指针)异常的方法(一)

时间:2019-07-15 05:09:02

相关推荐

高效处理NPE(空指针)异常的方法(一)

今天看了一篇空指针异常处理的文章,觉得非常实用,特意整理了一些处理空指针异常的方案!

1、前言

对于刚入门的程序员来说,往往被NPE(Null Pointer Exception)也就是所谓的指针异常搞得头昏脑涨,非常恶心,而处理NPE,防止NPE的存在是一个程序员的基本修养。现在我们就利用Java8的新特性 Optional 来高效处理空指针的同时也可以简化代码。

2、NPE

NPE(Null Pointer Exception)空指针是Java中最常见的异常,它是属于运行时的异常,当Java尝试去调用真实对象上的任何方法时,如果在运行中,该对象调用的是空引用(Null Reference) 那么就会抛出异常。

NPE产生的原因有如下几种:

<1>字符串变量未初始化

<2>接口类型的对象没有用具体的类初始化

如:List list;---会报错

List list = new ArrayList();---则不会报错

<3>当一个对象的值为空时

3、Optional

Optional类是Java 8 引入的一个很有趣的特性,他主要是为了解决臭名昭著的空指针异常(NPE)

Optional 类是一个可以为 null 的容器对象。如果值存在则 isPresent()方法会返回true,调用get()方法会返回该对象。Optional 类是个容器:它可以保存类型T的值,或者仅仅保存null。

3.1、Optional 对象创建

首先,我们打开Optional类,去看一下Optional类都有哪些方法

这里看一下几个创建Optional对象的方法:

Optional类中的两个构造方法都是 private 私有的,我们没办法在外面new Optional对象。

这个静态方法是创建一个包装值为空的一个对象

这个静态方法是创建一个包装值非空的一个对象

这个静态方法是如果参数value为空,则创建一个空对象,如果value不为空,则创建一个有参对象

下面做一个简单的实例,分别与上面的几个方法对象:

<1>创建一个包装对象值为空的Optiional对象

Optional<String> optEmpty = Optional.empty();

<2>创建一个包装对象值非空的Optional对象

Optional<String> optOf = Optional.of("optional");

<3>创建包装对象值允许为空也可以不为空的Optional对象

Optional<String> optNullable = Optional.ofNullable(null);

Optional<String> optOfNullable = Optional.ofNullable("optional");

3.2、Optional.get()方法 --- 返回对象的值

get()方法是返回一个Optional的实例值

如果value不为空则做返回,如果value为空则抛出异常“No Value present”,简单实例展示如下:

3.3 、Optional.isPresent()方法 --- 判断是否为空

isPresent()方法就是会返回一个boolean类型值,如果对象不为空则为true,如果为空则为false

简单实例展示

3.4、Optional.ifPresent()方法 --- 判断是否为空并返回函数

ifPresent()方法是如果对象不为空,则运行函数体

简单实例

如果对象不为空,则会执行这个函数打印年龄,其内部已经做了非空判断,不用担心出现空指针异常的情况。

3.5、Optiional.filter()方法 -- 过滤对象

filter()方法的意思是接受一个对象,然后对它进行条件过滤,如果条件符合则返回Optional对象本身。如果不符合则犯规空Optional。

简单实例

本期内容先暂时讲到这里,下期咱们再讲Optional类剩下的几个方法。

如果觉得《高效处理NPE(空指针)异常的方法(一)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。