首页 > 编程语言 >写写java中的optional

写写java中的optional

时间:2023-12-26 17:24:23浏览次数:37  
标签:ofNullable java Optional value 写写 optionala null optional

当我们写代码的时候经常会碰见nullpointer,所以在很多情况下我们需要做各种非空的判断。JDK8中引入了optional,他是一个包装好的类,我们可以把对象传入optional对象中,接下来就可以在optional中进行安全的消费

一般使用的都是optional的方法ofNullable,这样当对象为null的时候会顺利执行

举一个简单的例子

String a="null";
//把a封装至optional中
Optional<String> optionala=Optional.ofNullable(a);
//消费对象
optionala.ifPresent(x-> System.out.println(x));

这里推荐使用ofNullable,不推荐使用of,文档中介绍如果使用of并且空值的话会抛出 NoSuchElementException – 如果不存在任何值

    public static <T> Optional<T> ofNullable(T value) {
        return value == null ? empty() : of(value);
    }

还推荐使用orElseGet与orElseThrow,如果存在默认值且value为空则会直接返回默认值,当然两者都为空的时候还是会抛出错误

    public T orElseGet(Supplier<? extends T> other) {
        return value != null ? value : other.get();
    }

使用例子

     String a="null";
        Optional<String> optionala=Optional.ofNullable(a);
        a = optionala.orElseGet(() -> "abc");
        System.out.println(a);  
     a = optionala.orElseThrow(()->new RuntimeException("a为空"));


optional也可以像stream一样有中间操作:过滤filter,map

标签:ofNullable,java,Optional,value,写写,optionala,null,optional
From: https://www.cnblogs.com/kun1790051360/p/17928843.html

相关文章

  • 十八,JAVA 多线程,网络编程
    线程的休眠//线程的休眠try{    Thread.sleep(3000);//毫秒 }catch(InterruptedExceptione){ e.printStackTrace();}//第二种方式:try{    TimeUnit.MINUTES.sleep(3);}catch(InterruptedExceptione){ e.printStackTra......
  • 重温Java修饰符
    Java语言修饰符大致分为两类,即访问权限修饰符和非访问权限修饰符。一、访问权限修饰符public:共有访问。对所有的类都可见。protected:保护型访问。对同一个包可见,对不同的包的子类可见。default:默认访问权限。只对同一个包可见,注意对不同的包的子类不可见。private:私有访问。......
  • 7. Java 内存模型
    Java内存模型Java内存模型(JavaMemoryModel)的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节1.主内存与工作内存Java内存模型规定了所有的变量都存储在主内存(MainMemory)中(虚拟机内存的一部分)。每条线程......
  • java接口自动化系列(01):自动化测试框架设计(入门版)
     前言想必很多测试小伙伴自动化都是用的python吧?从当前测试招聘要求可以看到,测试开发就是全栈要求,要想在职场有竞争力,就得多个技术方向逐个提升;而和自动化、测开、性能、白盒等都相关的语言就是java,当然,这是基于很多公司项目是java来说的,毕竟Java已经发展了近20年,丰富的周边框架打......
  • java接口自动化系列(02):测试数据文件设计
    说明本次分享的是测试数据存excel中,后续分享测试数据存yaml中常用数据用例数据频繁使用到的值,我们可以放到一个变量中,这样避免修改值的时候大面积修改示例sheet名称:variables解释:标题行每个单词首字母大写,因为代码里面反射会用到解释:字段数据Name:变量名,#{xxx}整体表示变量名Value:变......
  • Java泛型详解
    Java泛型详解转载自:Java中的泛型(两万字超全详解)一、泛型概述1.什么是泛型?为什么要试用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型的确定的,而变量是一个参数。在调用普通方法时需要传入对应形参数据类型的......
  • java读取yaml文件
    应用场景自动化测试中,用例数据存放在yaml文件中 数据 person.yaml---id:1name:韧age:18---id:2name:qzcsbjage:19person2.yaml----id:3name:小韧age:18-id:4name:全栈测试笔记age:19person3.yaml----id:5name:韧哥age:18......
  • JavaWeb - Day12 - 基础登录功能、登录校验(重点)、登录认证、异常处理
    01.登录基础功能在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。这是不安全的,所以我们今天的主题就是登录认证。最终我们要实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。......
  • 无涯教程-Java9 - JavaDocs增强
    可以使用javadoc工具生成Java文档。当前,它以html4.0格式生成文档。在Java9中,无涯教程可以通过在命令行参数中使用-html5选项来生成html5格式的文档。旧样式Java文档考虑以下C:/JAVA文件夹中的代码。/***@authorMahKumar*@version0.1*/publicclassTester{......
  • Java 二维数组
    二维数组:二维数组的元素个数=二维数组中一维数组的个数= arr.length;二维数组的每个元素是一维数组,所以如果需要得到每个一维数组中的元素,还需要再遍历一维数组;arr[i][j]表示:二维数组的第 i+1 个一维数组的第 j+1 个元素;二维数组的初始化: 1.静态初始化定......