将 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.
我写的时候遇到一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢
您不能这样做的原因有两个:
您不能只使用任何独立的表达式作为语句。与某些语言(例如 JavaScript)不同,Java 没有 "expression statement," 的一般概念,只有一些表达式也允许作为语句(如方法调用) .
条件运算符必须有结果,但如果您的方法是 void
,它们不会产生结果。
只保留 if
/else
.
旁注:一系列 if
/else
和 instanceof
倾向于提出一个设计问题,可以用更简洁的方式解决。
我正在尝试使用三元运算符 ?-:
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.
我写的时候遇到一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢
您不能这样做的原因有两个:
您不能只使用任何独立的表达式作为语句。与某些语言(例如 JavaScript)不同,Java 没有 "expression statement," 的一般概念,只有一些表达式也允许作为语句(如方法调用) .
条件运算符必须有结果,但如果您的方法是
void
,它们不会产生结果。
只保留 if
/else
.
旁注:一系列 if
/else
和 instanceof
倾向于提出一个设计问题,可以用更简洁的方式解决。