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. ASP.NET Core 进程外(out-of-process)托管

    ASP.NET Core 进程外(out-of-process)托管 在本节中,我们将讨论 ASP.NET Core 中的Out Of Process Hosting. ASP.NET Core 进程 ...

  2. js 开课

    1.Onclick:点击事件 实例: <p onclick="javascript:alert('hello world');">clickMe</p> 三 ...

  3. Mysql使用ReplicationDriver驱动实现读写分离

    数据库的主从复制环境已经配好,该要解决系统如何实现读写分离功能了.Mysql的jdbc驱动提供了一种实现ReplicationDriver. 1 数据库地址的两种写法 参考:https://dev.m ...

  4. maven 学习---POM机制

    POM 代表工程对象模型.它是使用 Maven 工作时的基本组建,是一个 xml 文件.它被放在工程根目录下,文件命名为 pom.xml. POM 包含了关于工程和各种配置细节的信息,Maven 使用 ...

  5. Qt时间转换 当前时间

    当前时间 qDebug() << QTime::currentTime().toString(Qt::ISODate); //"15:23:48" qDebug() & ...

  6. Android培训准备资料之UI一些相似控件和控件一些相似属性之间的区别

    这一篇博客主要收集五大布局中的一些相似控件和控件一些相似属性之间的区别 ImageView ImageButton Button 三者有啥区别? (1)Button继承自TextView,ImageV ...

  7. 9.InfluxDB-InfluxQL基础语法教程--LIMIT and SLIMIT 子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) LIMIT和SLIM ...

  8. 对Quene中的队列的状态进行操作

    查看队列的状态(包括队列的满状态.空.元素个数等等) import multiprocessing quene = multiprocessing.Queue(3) quene.put(12) que ...

  9. Unity检视面板的继承方法研究 (二)

    之前做了普通对象的可继承的检视面板类, 现在想要实现对Unity自带的检视面板的继承的话, 要怎样写呢? 万变不离其宗,  仍然是围绕UnityEditor.Editor.CreateEditor 这 ...

  10. 习题6-2 使用函数求特殊a串数列和

    #include <stdio.h> int fn(int a, int n); int SumA(int a, int n); int main() { int a, n; scanf_ ...