快速入门 java8-Optional类学习

概要

通常在日常的开发中,总是无法难以避免会出现空指针异常的错误。OPtional类是一个容器类,代表一个值存在或者不存在,避免空指针异常。那么java8中提供了那些常用的API呢?

常用方法说明
optional.of(T t)创建一个基于T的Optional实例
optional.empty()创建一个空的Optional实例
optional.ofNullable(T t)若t不为null。创建Optional实例
optionl.isPresent()判断optional对象是否有值
optional.orElse(T t)若optional不为空,则返回optional实例子,否则返回T的Optional实例
orElseGet(Supplier s)若对象包含值,则返回值,否则返回s获取的值
map(Function f)若有值,返回操作后的Optional实例,否则返回空的Optional实例
flatMap(Function mapper)与map类似,返回值是Optional

进行Mybatis查询对象的时候,通过封装查询对象的Optional来减少空指针的异常,是常见的业务处理模式,下面简单演示以下java8提供的Optional类常见的使用API。

代码演示

public class TestOptional {

    /**
     * 测试OptionalOF的null
     */
    @Test
    public void testOptionalOF() {
        Optional<Employee> optional = Optional.of(null);
        // 返回 java.lang.NullPointerException
        System.out.println(optional.get());
    }

    /**
     * 测试OptionalEmpty
     */
    @Test
    public void testOptionalEmpty() {
        // 构建空的Optional
        Optional<Employee> optional = Optional.empty();
        // 返回 java.util.NoSuchElementException: No value present
        System.out.println(optional.get());
    }

    /**
     * 测试OptionalOfNull
     */
    @Test
    public void testNull() {
        Optional<Employee> optional = Optional.ofNullable(null);
        // 返回 java.util.NoSuchElementException: No value present
        System.out.println(optional.get());
    }

    /**
     * 测试OptionalOrelse,map,FlatMap
     */
    @Test
    public void testOptionalOrElse() {
    	// 创建空的Optional对象
        Optional<Employee> optional = Optional.ofNullable(null);
        // 这里因为Optional对象为空,所以将会返回新建的李四对象
        Employee employee = optional.orElse(new Employee("李四", 25, 20001D));
        // 打印李四的姓名
        Optional<String> s = optional.map(Employee::getName);// (e) -> e.getName()
        Optional<String> s1 = optional.flatMap((e) -> Optional.of(e.getName()));
        System.out.println(s1);
        System.out.println(employee);
        Employee employee1 = optional.orElseGet(Employee::new);
        System.out.println(employee1);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值