JAVA8之妙用Optional解决判断Null为空的问题
引言 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user.getAddress().getProvince() ; 这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法 if (user!= null ){ Address address = user.getAddress() ; if (address!= null ){ String province = address.getProvince() ; } } 这种写法是比较丑陋的,为了避免上述丑陋的写法,让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明 API介绍 先介绍一下API,与其他文章不同的是,本文采取类比的方式来讲,同时结合源码。而不像其他文章一样,一个个API罗列出来,让人找不到重点。 1、Optional(T value),empty(),of(T value),ofNullable(T value) 这四个函数之间具有相关性,因此放在一组进行记忆。 先说明一下, Optional(T value) ,即构造函数,它是private权限的