我不能找到一種方法,做Java的Optional如下:Java可選可用於流量控制嗎?
if (SOME_OBJECT != null) {
doSomething(SOME_OBJECT);
} else {
doSomethingElse();
}
通過使用Optional
,我的意思並不是指與Optional.ofNullable(SOME_OBJECT).isPresent()
更換SOME_OBJECT == null
,這更長的語法比如果爲null?只需勾選。
什麼我希望是這樣的:
Optional.ofNullable(SOME_OBJECT)
.ifPresent(this::doSomething)
.orElse(this::doSomethingElse);
我找不到像我剛寫的API。它存在嗎?如果是這樣,那是什麼?如果不是,爲什麼不呢? :)
代碼的第二件看起來像一個反模式:(爲什麼?也許是Java的建築師防止故意此語法...
它似乎令人驚訝'ifPresent'不返回'Optional',而且似乎沒有'ifAbsent'。 –
我認爲第二塊代碼可能是反模式,因爲它執行三個方法調用,並且似乎也執行了更多的檢查('ifPresent'和'orElse'必須重新檢查'ofNullable'的結果。至少像複製一樣複雜,並且會更難以維護,所有的缺點(即使很小),沒有任何好處 – markspace
@markspace:我傾向於將'Optional'看作一個整體。 )但是我沒有在憤怒中使用它(我現在還沒有做過任何嚴肅的Java),所以我的觀點是反動的和不知情的...... :-) –