我知道有一种方法可以用简短的形式编写Java if语句。

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}

有谁知道如何把以上5行的简写成一行吗?


当前回答

使用三元运算符:

name = ((city.getName() == null) ? "N/A" : city.getName());

我认为你有反向的条件-如果它是空的,你想要的值是“N/A”。

如果城市为空呢?在这种情况下,你的代码就会完蛋。我还要再检查一下:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());

其他回答

你可以用简短的形式写出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";
}
name = (city.getName() != null) ? city.getName() : "N/A";

在Java 8中:

name = Optional.ofNullable(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());