2017年架构师最重要的48个小时 | 8折倒计时
起首来看下Optional类的构造图:

1,Optional拥有两个字段
- /**
- * Common instance for {@code empty()}.
- */
- private static final Optional<?> EMPTY = new Optional<>();
- /**
- * If non-null, the value; if null, indicates no value is present
- */
- private final T value;
1)EMPTY持有某个类型的空值构造,调用empty()返回的等于该实例
- public static<T> Optional<T> empty() {
- @SuppressWarnings("unchecked")
- Optional<T> t = (Optional<T>) EMPTY;
- return t;
- }
2,Optional的办法
1)构造函数
- private Optional() {
- this.value = null;
- }
- private Optional(T value) {
- this.value = Objects.requireNonNull(value);
- }
Optional(T value)如不雅vaule为null就会抛出NullPointer异常,所以对于应用的场景这两个构造器都实用.
2)生成Optional对象
有两个办法 of(T)和ofNullable(T)
- public static <T> Optional<T> of(T value) {
- return new Optional<>(value);
- }
- public static <T> Optional<T> ofNullable(T value) {
- return value == null ? empty() : of(value);
- }
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:如不雅值为空则返回指定的值

网友点评
精彩导读
科技快报
品牌展示