在一行代码和一个方法调用中检查返回值是否不为空,如果是,则赋值。
- 论坛
- 在一行代码和一个方法调用中检查返回值是否不为空,如果是,则赋值。
19 浏览
在一行代码和一个方法调用中检查返回值是否不为空,如果是,则赋值。
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赋值为某个值,否则为另一个值;
我猜我只是在讨论语法,编译代码后,它可能在性能方面并没有太大区别。
由于这是如此常见的代码,有一个一行代码来编写它将会很棒。
其他语言是否具有此功能?