繁体   English   中英

可选的 java 8,从方法中“返回”

[英]Optional java 8 with "return" from methods

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

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

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

谢谢

我不明白为什么你应该接受一个为params传递null的调用者。 如果有人只用一个参数调用getErrorMessageparam将是一个空数组(不是null )。 所以我建议:

    Objects.requireNonNull(params);
    return processWithParams(code, params);

不禁止调用者使用null作为第二个参数进行调用。 如果您的代码已经有很多这样的调用,而您现在不想清理它:

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

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

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

或者如果不需要的处理非常昂贵:

              .orElseGet(() -> process(code));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM