在一行代码和一个方法调用中检查返回值是否不为空,如果是,则赋值。

19 浏览
0 Comments

在一行代码和一个方法调用中检查返回值是否不为空,如果是,则赋值。

Java中充斥着像这样的语句:

if(cage.getChicken() != null) {
    dinner = cage.getChicken();
} else {
    dinner = getFreeRangeChicken();
}

在将返回的对象分配给dinner之前,需要调用两次getChicken()

这也可以写成一行,如下所示:

dinner = cage.getChicken() != null? cage.getChicken() : getFreeRangeChicken();

但遗憾的是,仍然调用了两次getChicken()

当然,我们可以分配一个局部变量,然后再次使用三元运算符进行分配,如果不为空,但这是两行代码,不太美观:

FutureMeal chicken = cage.getChicken();
dinner = chicken != null? chicken : getFreeRangeChicken();

那么有没有办法说:

如果某个值不为空,则将变量var赋值为某个值,否则为另一个值;

我猜我只是在讨论语法,编译代码后,它可能在性能方面并没有太大区别。

由于这是如此常见的代码,有一个一行代码来编写它将会很棒。

其他语言是否具有此功能?

0