zoukankan      html  css  js  c++  java
  • 【技术累积】【点】【java】【9】Optional

    基础概念

    • java8引入的,java9有加强
    • Google公司出品
    • 旨在更好的处理NullPointException

    创建Optional实例和基础使用

    Optional op1 = Optional.ofNullable(entity);
    Optional op2 = Optional.of(entity);
    Optional op3 = Optional.empty();
    

    三种创建方式,要求不能为空、都可以、empty类型的;

    基本使用:

    op1.get(); //拿到其中的元素
    op1.isPresent(); //判断其中非空
    

    既然是对付空指针的,就要有判空的能力。

    其他还有

    orElse()
    orElseGet()
    orElseThrow()
    filter()
    map()
    flatMap()
    ifPresent()
    

    具体的参考下面博客链接吧,自己用用就熟悉了,何况从字面也能猜个7788

    更加正确的使用方式

    一句话:正确场景+链式调用

    直白的讲, 当我们还在以如下几种方式使用 Optional 时, 就得开始检视自己了

    • 调用 isPresent() 方法时
    • 调用 get() 方法时
    • Optional 类型作为类/实例属性时
    • Optional 类型作为方法参数时

    给出逐渐变化的例子如下:

    public static String getName(User u) {
        if (u == null)
            return "Unknown";
        return u.name;
    }
    
    public static String getName(User u) {
        Optional<User> user = Optional.ofNullable(u);
        if (!user.isPresent())
            return "Unknown";
        return user.get().name;
    }
    
    public static String getName(User u) {
        return Optional.ofNullable(u)
                        .map(user->user.name)
                        .orElse("Unknown");
    }
    

    所以,适用场景也比较明显了,我觉得有两种:

    • 多个null判断的,多层嵌套的;
    • 单一null判断的,迅速执行的;

    参考博客

  • 相关阅读:
    constraint更新表列约束默认值
    sql语句 关于日期时间、类型转换的东西
    SQL数据库完全复制
    SQLServer语句 汇总
    SQL Server Profiler使用方法
    SQL语句-批量插入表(表数据插表)
    VS 快捷键
    外部引用 jQuery 库
    mongodb笔记
    Ubuntu16.04安装live-server
  • 原文地址:https://www.cnblogs.com/andy1202go/p/9674456.html
Copyright © 2011-2022 走看看