Java中是否有类似于PHP的三元运算符的简写版本?

5

在PHP中,三元运算符有一种简短的形式。

expr1 ? expr2 : expr3;

变成
expr1 ? : expr3;

短语法根据真为expr1的结果返回,根据假为expr3的结果返回。这使得可以根据变量自身的当前状态来填充变量的聪明代码成为可能。例如:
$employee = $employee ? : new Employee();

如果$employee == null或因其他原因求值为false,则上面的代码将创建new Employee();否则,$employee中的值将被重新分配给自身。
我正在寻找类似于Java的内容,但是我找不到任何类似三元运算符的用例。所以我想知道是否有类似的功能或类似的东西可以避免三元运算符中的一个表达式以减少重复。

不,Java中没有这样的简短版本。 - Louis Wasserman
1个回答

10
没有,三元运算符根据定义需要三个操作数。
自PHP 5.3以来,可以省略三元运算符的中间部分。表达式expr1 ?: expr3如果expr1为真,则返回expr1,否则返回expr3。
来源:PHP手册 就像Java中的那个一样,但在Java中,您需要指定两个结果:
三元if-else运算符使用三个操作数,根据布尔断言的真实性或假性产生一个值。它的形式如下:
boolean-exp ? value1 : value2

来源:

Java三元条件运算符规范

官方Java文档

Java.net博客

还要记住的是,与Java和其他使用类似运算符的流行语言不同,在PHP中,?:是左结合的。因此,以下代码:

<?php
$arg = "T";
$vehicle = ( ( $arg == 'B' ) ? 'bus' : 
             ( $arg == 'A' ) ? 'airplane' : 
         ( $arg == 'T' ) ? 'train' : 
         ( $arg == 'C' ) ? 'car' : 
         ( $arg == 'H' ) ? 'horse' : 
                               'feet' );
echo $vehicle;

这段代码输出的是horse,而不是Java中你所期望的train

参考资料:

http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#operators


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接