首页 > 编程语言 >Java Optional

Java Optional

时间:2022-12-11 18:45:47浏览次数:36  
标签:ofNullable Java System println null Optional out

Java 8 新增的一个容器对象,相当于在对象上面进行了包装,并提供了一些操作对象的实用方法。

一些方法的使用示例:

    @Test
    public void optional(){
        // empty创建一个空的Optional对象
        Optional<String> empty = Optional.empty();
        // get如果值存在,返回值;否则抛出异常
        System.out.println(empty.get());
        // ofNullable允许接受一个值为null的对象
        // ifPresent如果值存在,调用参数传入的方法
        Optional.ofNullable("upper").ifPresent(item -> System.out.println(item.toUpperCase()));
        // filter提供一个断言,过滤Optional的值
        Optional<List<Integer>> integers = Optional.ofNullable(Arrays.asList(1, 2, 3, 4, 5)).filter(list -> list.size() > 5);
        // orElse如果前一个调用返回的Optional值为null,那么返回orElse方法中的值
        String v1 = Optional.of("").filter(e -> e != null && e.length() > 0).orElse("default");
        System.out.println(v1);
        // orElseGet提供一个值的生成器,返回生成器生成的结果
        String v2 = Optional.of("").filter(e -> e != null && e.length() > 0).orElseGet(() -> "123");
        System.out.println(v2);
        // orElseThrow如果前一个调用返回的Optional值为null,返回调用传入参数的方法返回的值
        String v3 = Optional.of("").filter(e -> e != null && e.length() > 0).orElseThrow(RuntimeException::new);

        /**
         * equals判断两个Optional对象是否相等,如果满足一下条件,认为两个Optional对象相等
         *     - other对象是一个Optional类的实例
         *     - this和other的值都存在
         *     - Objects.equals(this.value, other.value)
         */
        Optional<String> o1 = Optional.ofNullable("123");
        Optional<String> o2 = Optional.ofNullable("123");
        Optional<String> o3 = Optional.ofNullable("1234");
        Optional<String> o4 = Optional.empty();
        System.out.println(o1.equals(o2));
        System.out.println(o1.equals(o3));
        System.out.println(o1.equals(o4));
    }

 

标签:ofNullable,Java,System,println,null,Optional,out
From: https://www.cnblogs.com/heliocc/p/16974121.html

相关文章

  • Java异常学习
    P77Error和Exception什么是异常实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在......
  • JavaScript笔记 - 防抖与节流
    防抖与节流目录防抖与节流1.防抖2.节流在进行窗口操作或者输入框操作时,如果事件处理函数触发频率过高,会加重浏览器和服务器的负担。此时可以使用防抖和节流的方式来减......
  • Java面向对象学习
    P60什么是面向对象面向过程&面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么...面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类的......
  • IDEA创建Java Web项目
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。......
  • JAVA实现爬虫
    1.项目搭建2.导入相关依赖<dependency><!--jsoup只能解析网页tika能解析视频网站--><groupId>org.jsoup</groupId><artifactId>jsoup</artif......
  • java基础-定义和调用方法
    java基础-定义和调用方法定义静态无参方法publicstaticvoidplayGame(){System.out.println("aaaa");}定义静态无参方法publicstaticv......
  • Javascript的预解析机制
    JS的预解析机制想要理解js的解析机制,不妨先了解两个概念:变量声明提升与函数声明提升。声明提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。变量......
  • java 写入网页内容
    java写入网页内容publicstaticbooleanwriteHtml(StringhtmlPath,StringhtmlContent)throwsIOException{FilenewFile=newFile(htmlPath);//自动创......
  • 数据结构与算法__07--前序、中序、后序线索化二叉树,前序、中序、后序线索化二叉树遍历
    1前序//前序线索化二叉树publicvoidthreadedPreNode(HeroNodenode){if(node==null){return;}//线索化当前节点if(node.getLeft()......
  • java gc日志的基本知识
    回顾一下gc日志的基本知识,下面是一条gc日志:33.125:[GC[DefNew:3324k->152k(3712k),0.0025925secs]3324k>152k(11904k),0.0031680secs]从左至右,各个信息的意思为:33.1......