返回第一个非空值
我有很多功能:
String first(){}
String second(){}
...
String default(){}
每个都可以返回一个 null 值,但默认值除外。每个函数可以采用不同的参数。例如,第一个可以不带参数,第二个可以接受字符串,第三个可以接受三个参数,依此类推。我想做的是这样的:
ObjectUtils.firstNonNull(first(), second(), ..., default());
问题在于,由于函数调用,这确实进行了预先评估。我想在哪里提前退出,比如在第二个函数之后(因为函数调用可能很昂贵,想想API调用等)。在其他语言中,您可以执行类似如下操作:
return first() || second() || ... || default()
在Java中,我知道我可以做这样的事情:
String value;
if (value = first()) == null || (value = second()) == null ...
return value;
这不是很可读的IMO,因为所有==空检查。ObjectUtils.firstNonNull() 首先创建一个集合,然后进行迭代,只要懒惰地评估函数,这是可以的。
建议?(除了做一堆如果)