Optional 类的简介

  Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了。Optional类主要就是为子决解价值亿万的错误,空指针异常。

  Optional类其实就是一个可选值的包装类,说明这个类即可以有空值,也可以有对象。

Optional 简单使用

  这个类也会报空指针异常:of(),empty()

@Test
public void OptionalTest() {
//报:NullPointerException
//of()方法,是在传入null的时候,报错。
Optional<String> gg = Optional.of(null);
System.out.println(gg.get()); //创建一个空的Optional类
Optional<Object> empty = Optional.empty();
//报:NullPointerException
//empty取的时候,才会报错
System.out.println(empty.get());
}

  ofNullable()方法的使用。

@Test
public void OptionalTest2() {
//创建一个对象
//两个都可以用
//都不会报空指针异常
//Sku sku = null;
Sku sku = new Sku();
//如果不确定是不是空的时候可以用这个方法
Optional<Sku> optionalSku = Optional.ofNullable(sku);
//判断optional里面的值是不是空的
if (optionalSku.isPresent()) {
//如果不是空的就可以取出来
Sku sku1 = optionalSku.get();
System.out.println(sku1);
//如果是null的时候,不运行
//如果不是null的时候,会运行,输出一个对象的地址
}
}

  orElse()的使用的方法

@Test
public void optionalTest3() {
Sku sku = new Sku();
//getSkuName()没有值。
Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
//上面getSkuName()里面没有值的时候,才输出orElse的值。
String gg = optionalSku.orElse("上面的getSkuName里面没有值!");
System.out.println(gg);
//输出:上面的getSkuName里面没有值
}

  ifPresent()的使用方法

@Test
public void optionalTest4() {
Sku sku = new Sku();
//getSkuName()没有值。
Optional<String> optionalSku = Optional.ofNullable(sku.getSkuName());
//如果有值的时候,可以直接输出,但是如果没有值的时候,不会输出,并且不会报错。
optionalSku.ifPresent(System.out::println);
}
//无输出

更多的Optional类的使用:

深入理解java8中的Optional 类


细节决定成败!

个人愚见,如有不对,恳请扶正!

Java8 新特性 Optional 类的更多相关文章

  1. Java8新特性——Optional类的使用(有效的避免空指针异常)

    OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...

  2. JDK1.8新特性——Optional类

    JDK1.8新特性——Optional类 摘要:本文主要学习了JDK1.8新增加的Optional类. 部分内容来自以下博客: https://www.cnblogs.com/1ning/p/9140 ...

  3. Java8新特性——Optional

    前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ...

  4. JAVA8新特性Optional,非空判断

    Optional java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 "防止 NPE,是程序员的基本修养." 但是修养归 ...

  5. Java8新特性--Optional

    Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...

  6. java8 新特性 -Optional的常见用法

    1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...

  7. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  8. Java8新特性 - Optional容器类

    Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异 ...

  9. java8 新特性 Optional容器类

    public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...

随机推荐

  1. Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天

    序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务 ...

  2. 【转载】Visual Studio2017中如何设置解决方案中的某个项目为启动项目

    在C#的应用程序开发过程中,一个完成的解决方案可能包含多个子项目,有时候需要设置某一个子项目为启动项目,在Visual Studio 2017集成开发工具中,设置解决方案中的某个项目为启动项目的操作方 ...

  3. python3类和实例

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...

  4. 图解Java数据结构之单链表

    本篇文章介绍数据结构中的单链表. 链表(Linked List)介绍 链表可分为三类: 单链表 双向链表 循环列表 下面具体分析三个链表的应用. 单链表 链表是有序的列表,它在内存中存储方式如下: 虽 ...

  5. Google Analytics 学习笔记三 —— GA常用术语

    一.Sessions 1.会话,指定的时间段内在网站上发生的一系列互动,例如一次会话可以是网页浏览.事件或电子商务等.参考Google Analytics(分析)如何定义网络会话 2.会话结束的方式分 ...

  6. NoSuchMethodError 常见原因及解决方法

    相 关 阅 读 导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领 ...

  7. linux 进程通信之 信号

    一,管道PIPE 二,FIFO通信 三,mmap通信 四,信号的概念 信号的特点:简单,但不能携带大量的信息,满足特定条件就会发生 信号的机制:进程B发送信号给进程A.信号是由内核来处理的. 信号的产 ...

  8. MariaDB设置主从复制

    主从复制包含两个步骤: 在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置. 配置主服务器 master 如果没有启用,则需要 激活二进制日志. 给 master ...

  9. 通过Request对象获取请求的IP地址

    /** * 标识要从哪些消息头中获取IP地址 */ private static final String[] getIpArray = {"HTTP_X_FORWARDED_FOR&quo ...

  10. Linux---文件压缩与解压缩命令

    压缩格式: zip.gz.bz2.tar .tar.gz.tar.bz2.tar.xz.xz.z 最常用的是.tar.gz格式和.tar.bz2格式 1.zip格式 命令  说明  zip 压缩文件名 ...