可选的Java 8,带有“返回”方法

时间:2019-02-28 18:15:55

标签: java java-8 optional

好吧,我想创建一个根据某些条件(无论参数是否为空)返回String的方法:

private static String getErrorMessage(String code, Object... params) {
    Optional.ofNullable(params)
              .ifPresent(params -> processWithParams(code,params))
              .orElse(() -> process(code));
}

processWithParams()和process()方法都返回String(字符串值是我想从getErrorMessage()方法返回的值),有可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我不明白您为什么应该接受为.Select传递null的呼叫者。如果有人仅用一个参数调用params,则getErrorMessage将是一个空数组(而不是param)。所以我建议:

null

不禁止呼叫者使用 Objects.requireNonNull(params); return processWithParams(code, params); 作为第二个参数进行呼叫。如果您的代码已经有很多这样的调用,而您现在不想清理它:

null

但是,如果您出于某种奇怪的原因坚持认为,蜘蛛鲍里斯(Boris)是正确的:

    if (params == null) {
        params = new Object[] {};
    }
    return processWithParams(code, params);

或者如果不必要的处理成本过高:

    return Optional.ofNullable(params)
              .map(p -> processWithParams(code, p))
              .orElse(process(code));