zoukankan      html  css  js  c++  java
  • JAVA8之妙用Optional解决判断Null为空的问题

    请参考原文:http://www.ibloger.net/article/3209.html 

    if(user!=null){
        Address address = user.getAddress();
        if(address!=null){
            String province = address.getProvince();
        }
    }

    这种写法是比较丑陋的,为了避免上述丑陋的写法,让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明

    实战:

    使用最多:

     

    API介绍

    1、Optional(T value),empty(),of(T value),ofNullable(T value)

    这四个函数之间具有相关性,因此放在一组进行记忆。

    先说明一下,Optional(T value),即构造函数,它是private权限的,不能由外部调用的。其余三个函数是public权限,供我们所调用。那么,Optional的本质,就是内部储存了一个真实的值,在构造的时候,就直接判断其值是否为空。好吧,这么说还是比较抽象。直接上Optional(T value)构造函数的源码,如下图所示

    2、orElse(T other),orElseGet(Supplier<? extends T> other)和orElseThrow(Supplier<? extends X> exceptionSupplier)

    这三个函数放一组进行记忆,都是在构造函数传入的value值为null时,进行调用的。orElseorElseGet的用法如下所示,相当于value值为null时,给予一个默认值:

    @Test
    public void test() {
        User user = null;
        user = Optional.ofNullable(user).orElse(createUser());
        user = Optional.ofNullable(user).orElseGet(() -> createUser());
         Object orElseGet = Optional.ofNullable(inss).orElseGet(()-> "sssssss");
    }
    public User createUser(){
        User user = new User();
        user.setName("zhangsan");
        return user;
    }

     

  • 相关阅读:
    NYOJ41三个数从小到大排序
    HDUOJ2115I Love This Game
    NYOJ56阶乘因式分解(一)
    NYOJ65另一种阶乘问题
    HDUOJ1234开门人和关门人
    NYOJ74小学生算术
    NYOJ11奇偶数分离
    HDUOJ3980取模运算
    HDUOJ2014 青年歌手大奖赛_评委会打分
    HDUOJ1860 统计字符
  • 原文地址:https://www.cnblogs.com/lshan/p/10931153.html
Copyright © 2011-2022 走看看