Java 條件表示式的優化

罐裝麵包發表於2021-01-01

編碼的過程中,可能會遇到一個很長的表示式,比如下面這種: 

ParameterUtil.getInteger(request.getParameter("total"))

 

這種表示式的值可能為 null,但我們需要在他 != null 的時候取該值,而在 == null 的時候,自定義一個預設值,根據以往的經驗,可能會這樣寫:

Integer total = ParameterUtil.getInteger(request.getParameter("total"));
total = total != null ? total : 0;

 

但是,Java 這種方式始終不夠優雅,從 PHP 的條件表示式語法來看,當一個表示式的值 == true 時,則返回該值,否則,返回自定義的預設值,比如:

ParameterUtil.getInteger(request.getParameter("total")) ?: 0;

 

其實,Java 也可以做到,JDK 8 提供的 Optional 類滿足你的一切幻想:

Optional.ofNullable(ParameterUtil.getInteger(request.getParameter("total"))).orElse(0)

 

原理也很簡單,只是一層包裝而已:

public T orElse(T other) {
    return value != null ? value : other;
}

 

相關文章