相关疑难解决方法(0)


Java 8中的多个空检查

我有下面的代码,对于多次空检查有点难看.

String s = null;

if (str1 != null) {
    s = str1;
} else if (str2 != null) {
    s = str2;
} else if (str3 != null) {
    s = str3;
} else {
    s = str4;
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用Optional.ofNullable如下所示,但如果有人读取我的代码仍然很难理解.在Java 8中这样做的最佳方法是什么.

String s = Optional.ofNullable(str1)
                   .orElse(Optional.ofNullable(str2)
                                   .orElse(Optional.ofNullable(str3)
                                                   .orElse(str4)));
Run Code Online (Sandbox Code Playgroud)

在Java中9,我们可以使用Optional.ofNullableOR,但在Java8还有没有其他办法?

java lambda optional java-8 java-stream

95
推荐指数
5
解决办法
7263
查看次数

Java三元(即时)评估

我无法找到规范的相关部分来回答这个问题.在Java中的条件运算符语句中,是否评估了true和false参数?

因此,以下内容可能会抛出NullPointerException

Integer test = null;

test != null ? test.intValue() : 0;
Run Code Online (Sandbox Code Playgroud)

java conditional-operator short-circuiting

27
推荐指数
3
解决办法
2万
查看次数

在Java中将Integer(可能为null)转换为int的更好方法?

一个Integer可以null.我将a转换Integerint:

Integer integer = null;
int i;

try {
    i = integer.intValue();
}
catch (NullPointerException e) {
    i = -1;
} 
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

java int integer converter

9
推荐指数
2
解决办法
9829
查看次数

Java 8可选:在两个可能为空的值之间进行选择

我必须在两个String变量之间进行选择 - 第一个具有非null值.如果它们都是null- 那么我想退出该方法.这可以在以下代码中完成:

String value1 = <get from somewhere>
String value2 = <get from somewhere else>
String target = null;
if (value1 != null) target = value1;
else if (value2 != null) target = value2;
if (target == null) return null;
Run Code Online (Sandbox Code Playgroud)

它也可以用简短的形式完成:

String target = value1 != null ? value1 : value2 != null ? value2 : null;
if (target == null) return null;
Run Code Online (Sandbox Code Playgroud)

我正在努力学习如何以流畅的形式使用Optional
注意:我只能使用Java 8语法(所以没有Optional.or())

java optional java-8

7
推荐指数
2
解决办法
1077
查看次数

java中的c#null合并运算符是否相等?

我在java中搜索了一段相同的C#'nullable',发现最接近的方法之一是使用包装类; 现在我想知道java中的c#null coalescing运算符(??)是否相等?(当然除了普通的'if'陈述)

java nullable null-coalescing-operator

5
推荐指数
2
解决办法
2013
查看次数

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

我有以下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)

java java-8

1
推荐指数
1
解决办法
158
查看次数