zoukankan      html  css  js  c++  java
  • Java8 Optional && Guava Optional

    Java8 -- Optional

    boolean isPresent():与obj != null()一样;调用get()前要调用isPresent()检查,不然会报错

    Optional的三种构造方式:

    Optional.of(obj):obj不能为null,不然报npe

    Optional.ofNullable(obj):obj为null时得到Optional.empty(),非null就调用Optional.of(obj)

    Optional.empty()

    orElse(null):存在即返回,无则提供默认值

    orElseGet(() -> fetchAUserFromDatabase());:存在即返回,无则由函数来产生

    ifPresent(System.out::println);:存在就做点什么(不要if(obj.isPresent()) System.out::println;)

    obj.map(o -> o.getNames()).orElse(Collections.emptyList()):如果names有,就返回,没有就返回默认值

    map可以无限级联:obj.map(o -> o.getNames()).map(name -> name.toUpperCase()).orElse(Collections.emptyList())

    Guava -- Optional

    Optional.of(T):获得一个Optional对象,其内部包含了一个非null的T数据类型实例,若T=null,则立刻报错

    Optional.absent():获得一个Optional对象,其内部包含了空值

    Optional.fromNullable(T):将一个T的实例转换为Optional对象,T的实例可以为空

    boolean isPresent():如果Optional包含的T实例不为null,则返回true;若T实例为null,返回false

    T get():返回Optional包含的T实例,该T实例必须不为空;否则,对包含null的Optional实例调用get()会抛出一个IllegalStateException异常

    T or(T):若Optional实例中包含了传入的T的相同实例,返回Optional包含的该T实例,否则返回输入的T实例作为默认值

    T orNull():返回Optional实例中包含的非空T实例,如果Optional中包含的是空值,返回null,逆操作是fromNullable()

    Set<T> asSet():返回一个不可修改的set,该Set中包含Optional实例中包含的所有非空存在的T实例,且在该Set中,每个T实例都是单态,如果Optional中没有非空存在的T实例,返回的将是一个空的不可修改的Set。

  • 相关阅读:
    抓鱼社区
    DotNetTextBox V3.0 所见即所得编辑器控件Ver3.3.3 Free(免费版)
    Pet Shop 4.0系统
    北大青鸟PPT/ Net学习课件/asp.net,AJAX,ADO.net视频教程
    [开源]ASP.NET通用权限管理系统(FrameWork) 1.0.1 Release
    sql isnull函数
    几种常见算法的介绍及复杂度分析(转)
    ajaxpro配置与使用
    C#对图片的几种简单处理
    [你必须知道的.NET] 开篇有益
  • 原文地址:https://www.cnblogs.com/hangzhi/p/9173552.html
Copyright © 2011-2022 走看看