资讯专栏INFORMATION COLUMN

Optional

Tamic / 2444人阅读

摘要:存在即返回无则提供默认值而不是存在即返回无则由函数来产生而不要存在才对它做点什么而不要如下多个级联间自动加非空校验之前每一级调用的展开都需要放一个值的判断。注更应该被视为一个私有方法。

三种构造方式: Optional.of(obj)、Optional.ofNullable(obj) 、Optional.empty()。

//存在即返回, 无则提供默认值
return user.orElse(null);  //而不是 return user.isPresent() ? user.get() : null;

//存在即返回, 无则由函数来产生
return user.orElseGet(() -> fetchUser()); //而不要 return user.isPresent() ? user: fetchUser();

//存在才对它做点什么
user.ifPresent(System.out::println);
//而不要如下
if (user.isPresent()) {
  System.out.println(user.get());
}

//多个级联间自动加非空校验
return Optional.of(new User())
            .map(User::getName)
            .map(String::toUpperCase)
            .orElse("zyf");
//Java8之前, 每一级调用的展开都需要放一个 null 值的判断。
User user = .....
if(user != null) {
  String name = user.getUsername();
  if(name != null) {
    return name.toUpperCase();
  } else {
    return null;
  }
} else {
  return null;
}

//orElseThrow
Optional num = Optional.of(1);
num
    .filter(s -> s < 0)
    .orElseThrow(() -> new RuntimeException("zyf"));

注:
Optional.isPresent() 更应该被视为一个私有方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67262.html

相关文章

  • Java8新特性之Optional

    摘要:上一篇小乐带大家了解了新特性之,接下来将会继续述说新特性之类是一个容器类,代表一个值存在或不存在,原来用表示一个值不存在,现在可以更好的表达这个概念。并且可以避免空指针异常。如果有值则将其返回,否则抛出。隐士地其中进行了判断。 上一篇小乐带大家了解了Java8新特性之Stream,接下来将会继续述说Java新特性之Optional showImg(https://segmentfaul...

    stackfing 评论0 收藏0
  • Java Optional API

    摘要:于是,在引入了,用来代表一种可能有可能没有的数据,可以用来缓解空指针异常的问题。 一位智者说过,没有处理过空指针异常就不算一个真正的 Java 程序员。这当然是开玩笑,但是空指针异常确实是很多程序出错的源头。于是,在 Java 8 引入了 java.util.Optional,Optional 用来代表一种 可能有可能没有 的数据,可以用来缓解空指针异常的问题。 简单地说,Option...

    YorkChen 评论0 收藏0
  • Java中的Optional

    摘要:工具类基本概念类的使用对象创建常用方法基本概念类是一个可以为的容器对象可以保存指定类型的值也可以只保存要么有值要么为中提供很多方法来避免显式的进行空值检查如果值存在则调用方法会返回调用方法就会返回这个对象类是一个没有子类的 ...

    JerryC 评论0 收藏0
  • 【修炼内功】[Java8] 使用Optional的正确姿势及序列化问题

    摘要:本文已收录修炼内功跃迁之路的为解决空的问题带来了很多新思路,查看源码,实现非常简单,逻辑也并不复杂。 本文已收录【修炼内功】跃迁之路 showImg(https://segmentfault.com/img/bVbrCvp?w=852&h=480); Java8的Optional为解决空的问题带来了很多新思路,查看Optional源码,实现非常简单,逻辑也并不复杂。Stuart Ma...

    Ajian 评论0 收藏0
  • 《java 8 实战》读书笔记 -第十章 用Optional取代null

    摘要:但返回的是一个类型的对象,这意味着操作的结果是一个类型的对象。反之,如果对象存在,这次调用就会将其作为函数的输入,并按照与方法的约定返回一个对象。 一、Optional 类入门 Java 8中引入了一个新的类java.util.Optional。变量存在时,Optional类只是对类简单封装。变量不存在时,缺失的值会被建模成一个空的Optional对象,由方法Optional.empt...

    时飞 评论0 收藏0
  • Java8(5):使用 Optional 处理 null

    摘要:与方法的区别在于,方法传入的参数为一个接口的实现当中有值的时候,返回值当中没有值的时候,返回从该获得的值。为的用户没有找到举一个的用途在的控制器中,我们可以配置统一处理各种异常。 写过 Java 程序的同学,一般都遇到过 NullPointerException :) —— 为了不抛出这个异常,我们便会写如下的代码: User user = getUserById(id); if (u...

    liuchengxu 评论0 收藏0

发表评论

0条评论

Tamic

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<