• JDK8新特性,Optional工具类的简单实用场景


    Optional

    Optional类是Java8的新特性,是一个可以为null的容器对象

    Optional就像一个壳子,里面包住了一个对象

    使用方法描述
    Optional.of(object)传递参数,如果of中的对象是null,就报空指针异常(用于创建optional对象)
    Optional.ofNullable(object)允许ofNullable传递null对象(用于创建optional对象)
    Optional.empty()返回空的Optional实例 (用于创建optional对象)
    Optional.isPresent()判断Optional实例是否为空
    Optional.orElse(Object)如果optional为空的话返回orElse中的对象
    Optional.get()获取optional中的T对象
    Optional.map()如果optional不为null,则执行map方法中的映射函数得到返回值。

    案例一:替代多层if else嵌套

    // 比如 一个数据有三层,我在取最里层的时候,要判断每一层的是否为空,这样就会出现大量if else嵌套
    // 这个方法传入一个 map类型的对象叫 resultMap
    // 如果resultMap为空,直接返回 orElse中的内容,如果map中取得值,有一步为空,那也返回orElse中的内容
    String address = Optional.ofNullable(resultMap)
        .map( m -> (Map<String,Object>)m.get("user") ) 
        .map( user -> (Map<String,Object>)m.get("info") ) 
        .map( info->(Map<String,Object>)m.get("address")) 
    	.orElse(null);
    System.out.println(address);
    
    //还有一个抛异常的, 为null的时候抛异常
    Optional.ofNullable(resultMap)
        .map( m->(Map<String,Object>)m.get("user")) 
        .map( user->(Map<String,Object>)m.get("info")) 
        .map( info->(Map<String,Object>)m.get("address")) 
    	.orElseThrow(() -> new Exception());
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    案例二:判断一个对象是否为空,若为空,则创建一个新对象

    User user = null;
    Optional.ofNullable(user).orElse(new User());
    
    • 1
    • 2

    案例三:通过ifPresent()判断一个对象是否为空

    // 返回ture false
    Optional.ofNullable(user).isPresent();
    
    // 不为空,进行一些操作
    Optional.ofNullable(porder).ifPresent(s -> {
        param.put("porder", Integer.parseInt(s));
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Linux线程
    家政预约上门app开发小程序同城服务
    xxl-job学习
    Spring Framework IOC入门案例&DI入门案例分析(Xml版)
    【编程题】【Scratch二级】2022.09 小老鼠偷面包
    第六章《凸优化核心过程:真正搞懂梯度下降过程》
    隐私计算FATE-离线预测
    app开发工具使用说明
    其它样式相关属性
    ZKP大爆炸
  • 原文地址:https://blog.csdn.net/w13966597931/article/details/127622196