• java 基本语法(十九)Optional类的使用


    java.util.Optional类
    1.理解:为了解决java中的空指针问题而生!
    Optional<T> 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null
    ,表示这个值不存在。原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避
    免空指针异常。

    2.常用方法:

    复制代码

    @Test
        public void test1(){
            //empty():创建的Optional对象内部的value = null
            Optional<Object> op1 = Optional.empty();
            if(!op1.isPresent()){//Optional封装的数据是否包含数据
                System.out.println("数据为空");
    
            }
            System.out.println(op1);
            System.out.println(op1.isPresent());
            //如果Optional封装的数据value为空,则get()报错。否则,value不为空时,返回value.
    //        System.out.println(op1.get());
    
        }
    
        @Test
        public void test2(){
            String str = "hello";
    //        str = null;
            //of(T t):封装数据t生成Optional对象。要求t非空,否则报错。
            Optional<String> op1 = Optional.of(str);
            //get()通常与of()方法搭配使用。用于获取内部的封装的数据value
            String str1 = op1.get();
            System.out.println(str1);
    
        }
    
        @Test
        public void test3(){
            String str = "beijing";
            str = null;
            //ofNullable(T t) :封装数据t赋给Optional内部的value。不要求t非空
            Optional<String> op1 = Optional.ofNullable(str);
            //orElse(T t1):如果Optional内部的value非空,则返回此value值。如果
            //value为空,则返回t1.
            String str2 = op1.orElse("shanghai");
    
            System.out.println(str2);//
    
    
        }

    复制代码

    3.典型练习:
    能保证如下的方法执行中不会出现空指针的异常。

    复制代码

    //使用Optional类的getGirlName():
    public String getGirlName2(Boy boy){
    
        Optional<Boy> boyOptional = Optional.ofNullable(boy);
        //此时的boy1一定非空
        Boy boy1 = boyOptional.orElse(new Boy(new Girl("迪丽热巴")));
    
        Girl girl = boy1.getGirl();
    
        Optional<Girl> girlOptional = Optional.ofNullable(girl);
        //girl1一定非空
        Girl girl1 = girlOptional.orElse(new Girl("古力娜扎"));
    
        return girl1.getName();
    }
    
    @Test
    public void test5(){
        Boy boy = null;
        boy = new Boy();
        boy = new Boy(new Girl("苍老师"));
        String girlName = getGirlName2(boy);
        System.out.println(girlName);
    
    }
  • 相关阅读:
    追踪路由信息
    Windows Server 2008 R2远程桌面服务安装配置和授权激活
    CentOS 7 下挂载NTFS盘及开机自动挂载
    functools 之 partial(偏函数)
    Flask-WTForms 简单使用
    Flask-Session 简单使用
    通过decorators = [,] 的形式给类中的所有方法添加装饰器
    Python __dict__属性详解
    面向对象的 __slots__
    related_name和related_query_name举例区别
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13308971.html
Copyright © 2020-2023  润新知