如果为null,则Java返回一个值 - 就像ruby nil ||价值回报值

时间:2016-03-11 08:00:39

标签: java ruby

Java中有没有办法轻松检查null并返回默认值?

在红宝石中,我们有:

nil || 100 # => evaluates to 100
nil || "Hello" # => evaluates to "Hello"
4   || 100 # => evaluates to 4

我知道Java中更简单的方法是:

Double variable = null
variable != null ? variable : 100.0 # => evaluates to 100.0
variable != null ? variable : "Hello" # => evaluates to "Hello"
variable = 4.0
variable != null ? variable : 100.0 # => evaluates to 4.0

3 个答案:

答案 0 :(得分:3)

Java8支持Optional,我们可以使用它来执行:

return Optional.ofNullable(variable).orElse(defaultValue);

Pre-Java8版本不包含此类,但是像Guava, do这样的第三方库提供了类似的类型。

答案 1 :(得分:2)

如果你不经常这样做,那么三元声明就不那么糟了。

如果你需要经常这样做,只需写一点方法来包装三元:

<T> T getOrDefault(T first, T second) {
  return first != null ? first : second;
}

答案 2 :(得分:1)

试试这个。

public static <T> T or(T... values) {
    for (T value : values)
        if (value != null)
            return value;
    return null;
}

System.out.println(or(null, 100));      // -> 100
System.out.println(or(null, "hello"));  // -> hello
System.out.println(or(4, 100));         // -> 4
System.out.println(or(null, null, null, "foo"));  // -> foo