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

时间:2017-05-05 07:41:37

标签: java if-statement ternary-operator

我尝试使用三元运算符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));

我调用的三种方法只返回void。

我写这个时会出现一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢

1 个答案:

答案 0 :(得分:3)

有两个原因你不能这样做:

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

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

  3. 保持if / else

    附注:一系列带有if的{​​{1}} / else往往会提出一个设计问题,可能会以更清洁的方式解决。