Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java返回一个null值,就像ruby中的nil | | value返回值一样简单_Java_Ruby - Fatal编程技术网

Java返回一个null值,就像ruby中的nil | | value返回值一样简单

Java返回一个null值,就像ruby中的nil | | value返回值一样简单,java,ruby,Java,Ruby,Java中有没有一种方法可以轻松地检查null并返回默认值 在ruby中,我们有: nil || 100 # => evaluates to 100 nil || "Hello" # => evaluates to "Hello" 4 || 100 # => evaluates to 4 我所知道的Java中更简单的方法是: Double variable = null variable != null ? variable : 100.0 # => evaluat

Java中有没有一种方法可以轻松地检查null并返回默认值

在ruby中,我们有:

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

Java8支持
可选
,使用它我们可以:

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

Java8之前的版本不包括此类,但是第三方库(如)提供了类似的类型。

Java8支持
可选的
,我们可以使用它:

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

Java8之前的版本不包含此类,但是第三方库(如)提供了类似的类型。

如果您不想经常这样做,三元语句并没有那么糟糕

如果您需要经常这样做,只需编写一个小方法来包装三元:

<T> T getOrDefault(T first, T second) {
  return first != null ? first : second;
}
T getOrDefault(T第一,T第二){
返回第一个!=null?第一个:第二个;
}

如果您不想经常这样做,三元语句并没有那么糟糕

如果您需要经常这样做,只需编写一个小方法来包装三元:

<T> T getOrDefault(T first, T second) {
  return first != null ? first : second;
}
T getOrDefault(T第一,T第二){
返回第一个!=null?第一个:第二个;
}
试试这个

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

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

不幸的是,不是。一般来说,您希望避免使用
null
,如果您在代码中的许多地方都这样做,您应该重新考虑您的设计。不幸的是,不是(+1)。彼得,你能详细说明一下吗
null
对于表示“无值”似乎非常合适,就像SQL中的
null
一样?Peter,我完全理解你的意思。所以+1。这完全是一种代码味道。不幸的是不是。一般来说,您希望避免使用
null
,如果您在代码的许多地方都这样做,您应该重新考虑您的设计。不幸的是,不是(+1)。彼得,你能详细说明一下吗
null
对于表示“无值”似乎非常合适,就像SQL中的
null
一样?Peter,我完全理解你的意思。所以+1。如果你提到番石榴,可能值得一提如果你提到番石榴,可能值得一提