Tag: coalesce

返回第一个非空值

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