温故 Java 8 中引入的 Optional 类

前言

为什么要有Optional类?(它试图去解决什么问题呢?)

答:Optional类试图去解决Java系统中大量出现的NullPointerException问题和繁琐的null检查。

使用

Optional常用方法:

  • 创建 Optional 对象,使用of(T) 或者 ofNullable(T),它们的不同点在于对于传入的参数为null时,是如何处理的。
    • of(T) 如果传入的参数为null,会报NullPointerException
    • ofNullable(T) 如果传入的参数为null,它会返回一个empty的Optional对象。
  • ifPresent() 判断是否有值(不推荐直接使用这个方法,看看是否可以使用orElse(T)方法)
  • get() 获取值;这个方法迷惑性比较大,如果直接调用,在没有值的情况下,会报NoSuchElementException异常。
  • 设置默认值,orElse(T) 或者 orElseGet(T)orElseGet(T)orElse(T)的延迟调用版。
  • orElseThrow(T) 没有值的情况抛异常

filter()、map()、flatMap()等方法就不记了,用法同 Java 8 的 Stream中的相关方法。

后记

未完待续。

参考资料

  • Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional!
  • Java 8 Optional: How to Use it
  • Guide To Java 8 Optional
  • 10 Examples of Optional in Java 8
  • Should Java 8 getters return optional type?

你可能感兴趣的:(温故 Java 8 中引入的 Optional 类)