Java 8 Optional使用上的坑

試問以下語句有問題嗎??

Optional<String> stringOptional = Optional.of(stringvariable)

Yes. Optional.of方法必須傳遞一個非null的變量,如果不做判斷傳入,肯定有一天會拋出NPE(NullPointerException)。

stringOptional.of("0.0f");

試問這樣stringOptional.get()是不是獲取0.0f字符串了?

No. 因為Optional類像String一樣都是final的,對象的生命周期其各個字段的值不能修改,因此看Optional的源碼是這樣子的:

public static Optionalof(Tvalue) {

? ? ? return new Optional<>(value);

}

因此正確寫法:

stringOptional = stringOptional.of("0.0f");?

總之,對于一個新的類,新的API如果不熟悉它的內(nèi)部實現(xiàn),貿(mào)然使用可能造成嚴重BUG。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容