1. 前言
相信不少小伙伴已经被 java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 “防止 NPE,是程序员的基本修养。”
但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用 Java8 的新特性 Optional 来尽量简化代码同时高效处理 NPE(Null Pointer Exception 空指针异常)
2. 认识 Optional 并使用
简单来说,Opitonal 类就是 Java 提供的为了解决大家平时判断对象是否为空用 会用 null!=obj 这样的方式存在的判断,从而令人头疼导致 NPE(Null Pointer Exception 空指针异常),同时 Optional 的存在可以让代码更加简单,可读性跟高,代码写起来更高效.常规判断:
//对象 人//属性有 name,agePerson person=new Person();
if (null==person){
return "person为null";
}
return person;
使用 Optional:
//对象 人//属性有 name,agePerson person=new Person();
return Optional.ofNullable(person).orElse("person为null");
测试展示类 Person 代码 (如果有朋友不明白可以看一下这个):
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
下面,我们就高效的学习一下神奇的 Optional 类!
2.1 Optional 对象创建
首先我们先打开 Optional 的内部, 去一探究竟 先把几个创建 Optional 对象的方法提取出来
public final class Optional {
private static final Optional> EMPTY = new Optional<>();
private final T value;
//我们可以看到两个构造方格都是private 私有的 //说明 我们没办法在外面去new出来Optional对象 private Optional() {
this.value = null;
}
private Optional(T value) {
this.value = Objects.requireNonNull(value);
}
//这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值 public static Optional empty() {
@SuppressWarnings("unchecked")
Optional t = (Optional) EMPTY;
return t;<