試問以下語句有問題嗎??
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。