Guava---Optional
Optional类实际上是一个抽象类.Guava内部对它的实现有Absent和Present两个类.Optional类实际上就是对任意类型再进行一层包装.它的目的是为了防止null值对程序的破坏.
Option.of(A) 若A是一个null,则会实际上会得到一个Absent对象.Absent对象的get操作其实现是直接抛出异常,因为不能对一个null进行get.这是完全符合逻辑的;
若A不是一个null,则实际上会得到一个Present对象,Present对象实际上内部就是A.当你get时.变得到了A.
Optional.presentInstances()方法负责将一个Iterable<Optional<A>>转换为一个Iterable<A>;
Optional对象还提供or方法,与位运算中的或类似.一个内部为null的Optional(也就是Absent)与null或,得到的还是一个Absent.与非空的对象or,得到的是该对象.