Java中Optional类的使用

这篇博客介绍了Java中的Optional类,旨在避免空指针异常。通过使用Optional.ofNullable()方法,可以在可能存在null值的地方包装对象。文章通过示例展示了如何使用Optional的orElse()方法确保在对象为空时返回默认值,从而保证代码的健壮性。同时,提供了一个避免空指针异常的getGirlName()方法优化实例。
摘要由CSDN通过智能技术生成

java.util.Optional类

1.理解:

Optional类:为了在程序中避免出现空指针异常而创建的。
Optional 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表 这个值存在。或者仅仅保存null,表示这个值不存在。原来用 null 表示一个值不 存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常

2.常用方法测试:

在这里插入图片描述

* 常用的方法:ofNullable(T t)
*            orElse(T t)

     Girl girl = new Girl();
        girl =null;

        //of(T t):保证t是非空的
//        Optional<Girl> girl1 = Optional.of(girl);//会报NullPointerException异常
//        System.out.println(girl1);

        //ofNullable(T t):t可以为null
        Optional<Girl> girl2 = Optional.ofNullable(girl);
        System.out.println(girl2);//Optional.empty
        System.out.println("****************************");

        //orElse(T t1):如果单前的Optional内部封装的t是非空的,则返回内部的t.
        //如果内部的t是空的,则返回orElse()方法中的参数t1.
        Girl orElse = girl2.orElse(new Girl("xixi", 24));
        System.out.println(orElse);

3.典型练习:

能保证如下的方法执行中不会出现空指针的异常。

public String getGirlName(Boy boy){
        return boy.getGirl().getName();
    }

    //优化以后的getGirlName():
    public String getGirlName1(Boy boy){
        if(boy != null){
            Girl girl = boy.getGirl();
            if(girl != null){
                return girl.getName();
            }
        }

        return null;

    }

//使用Optional类的getGirlName():

    public String getGirlName2(Boy boy){
        Optional<Boy> boyOptional = Optional.ofNullable(boy);
        //此时的boy1一定非空
        Boy boy1 = boyOptional.orElse(new Boy(new Girl("赵丽颖", 30)));

        Girl girl = boy1.getGirl();

        Optional<Girl> girlOptional = Optional.ofNullable(girl);
        //girl1一定非空
        Girl girl1 = girlOptional.orElse(new Girl("杨幂", 35));

        return girl1.getName();

    }

    @Test
    public void test2(){
        Boy boy = new Boy();
//        String girlName = getGirlName(boy);
//        System.out.println(girlName);//NullPointerException异常

        String girlName1 = getGirlName1(boy);
        System.out.println(girlName1);

        System.out.println("*********************");
        String girlName2 = getGirlName2(boy);
        System.out.println(girlName2);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值