美文网首页工作生活
新特性3-Optional类

新特性3-Optional类

作者: 三秋十里 | 来源:发表于2019-07-04 15:15 被阅读0次

    Java 8在java.util包中新增了Optional类,Optional类是一个可以包含或不可以包含非空值的容器对象。每一个Java项目,最主要的重复语句就是检查空指针异常NullPointerException。我们使用任何对象,都需要检查此对象是否为空,如果对象不为空我们才执行处理语句。
    Optional类像是一个容器,它保存一个类型为的值或是null值。通过使用Optional类的isPresent()方法,我们可以检查指定的对象是否为空。

    Java应用中最常见的bug就是空值异常。在Java 8之前,Google Guava引入了Optionals类来解决NullPointerException,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码。Java 8也将Optional加入了官方库。
    Optional仅仅是一个容易:存放T类型的值或者null。它提供了一些有用的接口来避免显式的null检查,可以参考Java 8官方文档了解更多细节。
    接下来看一点使用Optional的例子:可能为空的值或者某个类型的值:

    package com.ehking.example.java8.newfeature.demo07;
    
    import java.util.Optional;
    
    /**
     * Created by shiyanwu on 2017/4/14.
     */
    public class Java8OptionalDemo {
    
        public static void main(String[] args) {
    
            Optional< String > fullName = Optional.ofNullable( null );
            System.out.println( "Full Name is set? " + fullName.isPresent() );
            System.out.println( "Full Name: " + fullName.orElseGet( () -> "[none]" ) );
            System.out.println( fullName.map( s -> "Hey " + s + "!" ).orElse( "Hey Stranger!" ) );
    
            Optional< String > firstName = Optional.of( "Tom" );
            System.out.println( "First Name is set? " + firstName.isPresent() );
            System.out.println( "First Name: " + firstName.orElseGet( () -> "[none]" ) );
            System.out.println( firstName.map( s -> "Hey " + s + "!" ).orElse( "Hey Stranger!" ) );
            System.out.println();
        }
    }
    

    相关文章

      网友评论

        本文标题:新特性3-Optional类

        本文链接:https://www.haomeiwen.com/subject/vrhrhctx.html