欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Optional类

程序员文章站 2022-03-04 12:20:21
...

什么是Optional

Optional是Java8新引入的一个容器类,该容器类被final修饰且是单例模式的,该容器类对象可以一个保存空值或非空值,主要用于减少代码中大量的空检查语句以及降低程序出现NullPointerException概率。

为什么要使用Optional

我们知道作为Java开发人员,如果要评选出一个最常见的异常榜,那么NullPointerException必在榜单前三之列,而对每个对象进行空检查时又需要做不少的工作。此时使用Optional容器代替空检查语句,也许是个不错的选择。

如何得到Optional对象

由于Optional类的特殊性,所以无法通过常规的new对象的方式创建该对象,按照单例模式一般的套路,此时应该调用其公有的静态方法获取对象。
Optional类的公有静态方法一共有三个empty of ofNullable。
empty方法不接收参数,返回一个空的Optional对象。
of方法接受一个非空参数,返回一个保存该参数的Optional对象。
ofNullable方法接受一个参数,若参数非空则返回保存该参数的Optional对象。
若参数为空则返回一个保存该参数的Optional对象。

Optional的简单使用

数据准备:

public class Main {
    private static ArrayList<Optional> optList;
    public static void main(String[] args) {
        init(5);
    }

    public static void init(int i){
        optList = new ArrayList(i);
        Random random = new Random();
        for (int i1 = 0; i1 < i; i1++) {
            int i2 = random.nextInt(127);
            System.out.print(i2+"\t");
            optList.add(Optional.ofNullable(i2>=64?i2:null));
        }
        System.out.println();
    }
}

案例1:使用Optional的方法判断对象是否为空
Idea代码

public static void main(String[] args) {
    init(5);
    optList.forEach(x->System.out.print(x.isPresent()+"\t"));
}

控制器输出
Optional类
案例2:使用Optional中的方法判断该数据是否为空,若不为空则输出该容器中的值

public static void main(String[] args) {
    init(5);
    optList.forEach(x-> {
        if(x.isPresent()){
            System.out.print(x.get()+"\t");
        }
    });
}

控制台输出
Optional类

相关标签: 笔记 java