将 if/else-if/else 转换为 Java 中的三元运算符

Converting if/else-if/else to ternary operator in Java

我正在尝试使用三元运算符 ?-:

if-else 语句转换为相等语句

我的目标是转换这段代码:

if (s instanceof Class1) {
    do_something((Class1) s);
} else if (s instanceof Class2) {
    do_something_else((Class2) s);
} else {
    do_that((Class3) s);
}

我得出了这样的结果:

(s instanceof Class1) ? do_something((Class1) s):
                     ((s instanceof Class2) ? (do_something_else(Class2) s))) :
                     (do_that((Class3) s));

我调用的三个方法只是 return void.

我写的时候遇到一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢

您不能这样做的原因有两个:

  1. 您不能只使用任何独立的表达式作为语句。与某些语言(例如 JavaScript)不同,Java 没有 "expression statement," 的一般概念,只有一些表达式也允许作为语句(如方法调用) .

  2. 条件运算符必须有结果,但如果您的方法是 void,它们不会产生结果。

只保留 if/else.


旁注:一系列 if/elseinstanceof 倾向于提出一个设计问题,可以用更简洁的方式解决。