我知道有一种方法可以用简短的形式编写Java if语句。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有谁知道如何把以上5行的简写成一行吗?
我知道有一种方法可以用简短的形式编写Java if语句。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
有谁知道如何把以上5行的简写成一行吗?
当前回答
方法是用三元运算符:
name = city.getName() == null ? city.getName() : "N/A"
然而,我相信你在上面的代码中有一个拼写错误,你的意思是说:
if (city.getName() != null) ...
其他回答
的吗?: Java中的操作符
在Java中,你可以这样写:
if (a > b) {
max = a;
}
else {
max = b;
}
根据单一条件将单个变量设置为两种状态之一是if-else的常见用法,因此为它设计了一种快捷方式,即条件操作符?:。使用条件操作符,你可以在一行中重写上面的例子,像这样:
max = (a > b) ? a : b;
(a > b) ?A: b;是返回两个值之一(a或b)的表达式。条件(a > b)被测试。如果为真,则返回第一个值a。如果为false,则返回第二个值b。无论返回哪个值都依赖于条件测试> b。条件可以是返回布尔值的任何表达式。
方法是用三元运算符:
name = city.getName() == null ? city.getName() : "N/A"
然而,我相信你在上面的代码中有一个拼写错误,你的意思是说:
if (city.getName() != null) ...
在Java 8中:
name = Optional.ofNullable(city.getName()).orElse("N/A")
在Java 8+中,你有两个解决方案。 带有简短的if语句:
Objects.nonNull(city.getName())? city.getName(): "N/A";
在你的情况下,更好的解决方案是使用可选:
Optional.ofNullable(city)
.map(City::getName)
.orElse("N/A");
name = city.getName()!=null?city.getName():"N/A"