好的我想创建一个方法,根据某些条件返回一个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()方法返回的值),是否可能?
谢谢
我不明白为什么你应该接受一个来自null
params
的来电者。如果有人用一个参数调用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));