• Java8 新特性


    Optional 容器类的常用方法:

    • Optional.of(T t): 创建一个 Optional 实例
    • Optional.empty(): 创建一个空的 Optional 实例
    • Optional.ofNullable(T t): 若t 不为 null,创建 Optional 实例,否则创建空实例
    • isPresent(): 判断是否包含值
    • orElse(T t) : 如果调用对象包含值,返回该值,否则返回 t
    • orElseGet(Supplier s): 如果调用对象包含值,返回该值,否则返回 s 获取值
    • map(Function f): 如果有值对其处理,并返回处理后的 Optional ,否则返回 Optional.empty()
    • flatMap(Function mapper) : 与 map 类似,要求返回值必须是 Optional

    测试代码如下:

    package com.xq.java8;
    
    import com.xq.design.model.Employee;
    import org.junit.jupiter.api.Test;
    import java.util.Optional;
    
    public class TestOptional {
        @Test
        public void test1(){
            Optional<Employee> op = Optional.of(new Employee());
            Employee  emp =op.get();
            System.out.println(emp);
        }
        @Test
        public void test2(){
            Optional<Employee> op =Optional.empty();
            System.out.println(op.get());
        }
        @Test
        public void test3(){
            Optional<Employee> op = Optional.ofNullable(null);
            if(op.isPresent()){
                System.out.println(op.get());
            }
            Employee emp  = op.orElse(new Employee("张三",18,888.88, Employee.Status.FREE));
            System.out.println(emp);
    
            Employee emp1 = op.orElseGet(() -> new Employee());
            System.out.println(emp1);
    
            Optional<Employee> op1 = Optional.ofNullable(new Employee());
            if(op1.isPresent()){
                System.out.println(op1.get());
            }
        }
    
        @Test
        public void test4(){
            Optional<Employee> op = Optional.ofNullable(new Employee("张三",18,888.88, Employee.Status.FREE));
            Optional<String> name = op.map((e) -> e.getName());
            System.out.println(name.get());
    
            Optional<String> ops = op.flatMap((e) -> Optional.of(e.getName()));
            System.out.println(ops.get());
        }
    }

    本文来自博客园,作者:l-coil,转载请注明原文链接:https://www.cnblogs.com/l-coil/p/12901402.html

  • 相关阅读:
    C版程序语法 (消除左递归)
    文法
    201506110248 实验报告
    组合数据类型
    UBUNTU四种版本的区别【转】
    MFC对话框程序屏蔽回车与ESC键,Tab键
    std::fstream打开中文路径名失败的问题原因、解决方法以及注意事项
    前进。。。。。。
    程序员学习能力提升三要素[转]
    java学习推荐资源
  • 原文地址:https://www.cnblogs.com/xianquan/p/12901402.html
Copyright © 2020-2023  润新知