【技术累积】【点】【java】【9】Optional

基础概念

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

建立Optional实例和基础使用

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

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

基本使用:java

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

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

其余还有url

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

具体的参考下面博客连接吧,本身用用就熟悉了,况且从字面也能猜个7788spa

更加正确的使用方式

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

直白的讲, 当咱们还在以以下几种方式使用 Optional 时, 就得开始检视本身了指针

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

给出逐渐变化的例子以下:code

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");
}

因此,适用场景也比较明显了,我以为有两种:htm

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

参考博客

相关文章
相关标签/搜索