Java 条件表达式的优化

编码的过程中,可能会遇到一个很长的表达式,比如下面这种: 

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;
}

 

你可能感兴趣的:(Java)