可选的java 8,方法中带有“return”

问题描述 投票:1回答:1

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

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

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

谢谢

java java-8 optional
1个回答
1
投票

我不明白为什么你应该接受一个来自null params的来电者。如果有人用一个参数调用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));
© www.soinside.com 2019 - 2024. All rights reserved.