将if语句压缩成更短更优雅的代码

use*_*171 1 java java-8

我有以下if-else块,我想知道是否有更优雅的方式可以编写此代码...我使用的是Java 8

if(valueString != null) {
    return valueString;
}
else if(valueInt != null) {
    return String.valueOf(valueInt);
}
else if(valueFloat != null) {
    return String.valueOf(valueFloat);
}
else if(valueDate != null){
    return String.valueOf(valueDate);
}
else if(valueBit != null) {
    return String.valueOf(valueBit);
}
else {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

Yas*_*jaj 15

使用流并遍历所有值,如果它们都不为null,则返回null.

return Stream.of(valueString, valueInt, valueFloat, valueDate, valueBit)
             .filter(Objects::nonNull)
             .map(String::valueOf)
             .findFirst().orElse(null);
Run Code Online (Sandbox Code Playgroud)

  • @YassinHajaj而不是`x - > x!= null`你可以使用`Objects :: nonNull`.我发现一个方法参考看起来比一个lambda更好,但这只是一个偏好. (3认同)