好吧,我想创建一个根据某些条件(无论参数是否为空)返回String的方法:
private static String getErrorMessage(String code, Object... params) {
Optional.ofNullable(params)
.ifPresent(params -> processWithParams(code,params))
.orElse(() -> process(code));
}
processWithParams()和process()方法都返回String(字符串值是我想从getErrorMessage()方法返回的值),有可能吗?
谢谢
答案 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));