我知道有一种方法可以用简短的形式编写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) ...

其他回答

name = (city.getName() != null) ? city.getName() : "N/A";
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"

使用org.apache.commons.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");

你可以用简短的形式写出if, else if, else语句。例如:

Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";      

这是的缩写形式:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}