optional类的使用

概述

它是java.util包下的一个类,是一个包裹对象的容器,它可以包裹null或非null的对象。如果你要获取容器中的对象,需要使用get()方法。它的出现是为我们解决空指针异常的,以前我们写代码如果不进行if判断,会经常出现异常。现在有了他就会很优雅。因为它本身就是个对象,不管放进去的对象为不为null,始终不会返回null,所以你也不需要在你的业务流程中进行一大堆的判断,避免了程序运行时的空指针异常。

Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null值判断(null的防御性检查),避免null导致的NPE(NullPointerException)

使用

isPresent

一般不推荐使用,因为这种用法不但没有减少null的防御性检查,而且增加了Optional包装的过程,违背了Optional设计的初衷

public static String getGender(Student student)
{
    Optional<Student> stuOpt =  Optional.ofNullable(student);
    if(stuOpt.isPresent())
    {
        return stuOpt.get().getGender();
    }
    
    return "Unkown";
}

ifPresent

判断是否为空,当不为空时,结合lambda表达式使用,运行相应的方法,但是返回值为空

public static void printName(Student student)
{
    Optional.ofNullable(student).ifPresent(u ->  System.out.println("The student name is : " + u.getName()));
}

filter

完成对符合相应条件对象的筛选

public static void filterAge(Student student)
{
    Optional.ofNullable(student).filter( u -> u.getAge() > 18).ifPresent(u ->  System.out.println("The student age is more than 18."));
}

map

将对象进行操作后,可返回另一个经optional包装的对象

public static Optional<Integer> getAge(Student student)
{
    return Optional.ofNullable(student).map(u -> u.getAge()); 
}

参考文档

【java8新特性】Optional详解

Jdk1.8新特性学习(Optional)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值