好吧,我想创建一个根据某种条件返回字符串的方法(无论参数是否为null):
private static String getErrorMessage(String code, Object... params) {
Optional.ofNullable(params)
.ifPresent(params -> processWithParams(code,params))
.orElse(() -> process(code));
}
两个方法processWithParams()和process()返回字符串(字符串值是我要从geterrormessage()方法返回的值),是否可能?
谢谢
我不明白为什么您应该接受null
传递CC_1的呼叫者。如果有人只用一个参数调用getErrorMessage
,则param
将是一个空数组(不是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));