作家
登录

如何正确使用Java8的Optional机制

作者: 来源: 2017-11-01 09:08:11 阅读 我要评论

2017年架构师最重要的48个小时 | 8折倒计时


起首来看下Optional类的构造图:

1,Optional拥有两个字段

  1. /** 
  2.      * Common instance for {@code empty()}. 
  3.      */ 
  4.     private static final Optional<?> EMPTY = new Optional<>(); 
  5.  
  6.     /** 
  7.      * If non-null, the value; if null, indicates no value is present 
  8.      */ 
  9.     private final T value;  

1)EMPTY持有某个类型的空值构造,调用empty()返回的等于该实例

  1. public static<T> Optional<T> empty() { 
  2.         @SuppressWarnings("unchecked"
  3.         Optional<T> t = (Optional<T>) EMPTY; 
  4.         return t; 
  5.     }  

2,Optional的办法

1)构造函数

  1. private Optional() { 
  2.         this.value = null
  3.     } 
  4. private Optional(T value) { 
  5.         this.value = Objects.requireNonNull(value); 
  6.     }  

Optional(T value)如不雅vaule为null就会抛出NullPointer异常,所以对于应用的场景这两个构造器都实用.

2)生成Optional对象

有两个办法 of(T)和ofNullable(T)

  1. public static <T> Optional<T> of(T value) { 
  2.         return new Optional<>(value); 
  3.     } 
  4.  
  5.  public static <T> Optional<T> ofNullable(T value) { 
  6.         return value == null ? empty() : of(value); 
  7.     }  

of是直接调用的构造函数,是以如不雅T为null则会抛出空指针异常

}

ofNullable对null进行了处理,会返回EMPTY的实例,是以不会出现异常

所以只有对于明白不会为null的对象才能直接应用of

3)获取Optional对象的值

须要摈弃的应用方法

if(value.isPresent){

....

如今我须要获取goodsOptional里边的orderList,应当如许你操作

2)T vaule是该构造的持有的值

}else{

T t = value.get();

这种应用方法无异于传统的if(vaule != null)

精确的应用姿势:

orElse:如不雅值为空则返回指定的值

  1. Goods goods = new Goods(); 
  2.  Optional<Goods> goodsOptional = Optional.ofNullable(goods); 
     1/4    1 2 3 4 下一页 尾页

      推荐阅读

      向云上迁移数据时如何避免停机和中断

    2017年架构师最重要的48个小时 | 8折倒计时 摘要:越来越多的组织须要在数据中间/云之间移动数据,然则在迁徙过程中的一个关键风险点是停机。在2017年的营业持续性意识周这里,我欲望它能供>>>详细阅读


    本文标题:如何正确使用Java8的Optional机制

    地址:http://www.17bianji.com/lsqh/38331.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)