Java8 新特性 Optional 类

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 类

细节决定成败!

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

原文地址:https://www.cnblogs.com/xdtg/p/12014085.html

时间: 2024-11-03 03:25:17

Java8 新特性 Optional 类的相关文章

Java8新特性--Optional

Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 本文会逐个探讨Optional类包含的方法,并通过一两个示例展示如何使用. of 为非null的值创建一个Optional. of方法通过工厂方法创建Optional类.需要注意的是,创建对象时传入的参数不能为null.如果传入参数为null,则抛出NullPointerExcepti

httpClient 远程调用接口,java8新特性Optional

import java.util.Optional; /** * java 8新特性 * * @author wang-xiaoming * @date 2019年7月2日 */ public class OptionalTest { public static void ofNullable(String value) { Optional<String> opt = Optional.ofNullable(value); System.out.println("[ofNullab

Java8新特性 - Optional容器类

Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异常. Optional.of(T t) : 创建一个Optional 实例 Optional.empty() : 创建一个空的Optional 实例 Optional.ofNullable(T t):若t 不为null,创建Optional 实例,否则创建空实例 isPresent() : 判断是否

java8 新特性 Optional容器类

public class Godness { private String name; public Godness() { } public Godness(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { re

JAVA 8 新特性 Optional类

摘自b站尚硅谷JAVA视频教程 原文地址:https://www.cnblogs.com/superxuezhazha/p/12362502.html

Java8 新特性之流式数据处理

一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现. 比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现: List<Integer> evens = new ArrayList<>(); for (final Integer num : nums) { if (num % 2 =

乐字节-Java8新特性之Optional

上一篇小乐带大家了解了Java新特性之Stream,接下来将会继续述说Java新特性之Optional Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念.并且可以避免空指针异常. 1.of 为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException Optional<Integer> optional =

Java8新特性浅析

欢迎阅读我编写的Java 8介绍.本教程将带领你一步一步地认识这门语言的新特性.通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解.看完这篇教程后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等. 允许在接口中有默认方法实现 Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现.这个特性又被称为扩展方法.下面是我们的第一个例子: 1 2 3 4 5 6 7 interfac

Java8新特性-官方库新特性

一.Optional Java应用中最常见的bug就是空值异常.在Java 8之前,Google Guava引入了Optionals类来解决NullPointerException,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码.Java 8也将Optional加入了官方库. Optional仅仅是一个容易:存放T类型的值或者null.它提供了一些有用的接口来避免显式的null检查. API: Modifier and Type Method and Description s