我知道有一种方法可以用简短的形式编写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)? "N/A" : city.getName() );
首先检查条件(city.getName() == null)。如果是,则将"N/A"赋值给name,或者简单地将name="N/A",或者将city.getName()中的值赋值给name,即name=city.getName()。
这里值得注意的事情:
条件在括号中,后面跟着一个问号。这就是为什么我写(city.getName() == null)?这里,问号就在条件后面。甚至很容易看/读/猜! 冒号(:)左边的值和冒号右边的值 (a)当condition为真时,赋给冒号左边的值,否则赋给变量冒号右边的值。
这里有一个参考:http://www.cafeaulait.org/course/week2/43.html
其他回答
在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";
使用三元运算符:
name = ((city.getName() == null) ? "N/A" : city.getName());
我认为你有反向的条件-如果它是空的,你想要的值是“N/A”。
如果城市为空呢?在这种情况下,你的代码就会完蛋。我还要再检查一下:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
name = ( (city.getName() == null)? "N/A" : city.getName() );
首先检查条件(city.getName() == null)。如果是,则将"N/A"赋值给name,或者简单地将name="N/A",或者将city.getName()中的值赋值给name,即name=city.getName()。
这里值得注意的事情:
条件在括号中,后面跟着一个问号。这就是为什么我写(city.getName() == null)?这里,问号就在条件后面。甚至很容易看/读/猜! 冒号(:)左边的值和冒号右边的值 (a)当condition为真时,赋给冒号左边的值,否则赋给变量冒号右边的值。
这里有一个参考:http://www.cafeaulait.org/course/week2/43.html
name = city.getName()!=null?city.getName():"N/A"