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

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

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


当前回答

在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"

然而,我相信你在上面的代码中有一个拼写错误,你的意思是说:

if (city.getName() != null) ...

你可以用简短的形式写出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";
}

我总是忘记如何使用?:三元运算符。这个补充的回答是一个快速的提醒。它是if-then-else的缩写。

myVariable = (testCondition) ? someValue : anotherValue;

在哪里

()保存if ? 意味着然后 :表示其他

这和

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}

为了避免两次调用.getName(),我将使用

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

在Java 8中:

name = Optional.ofNullable(city.getName()).orElse("N/A")