我尝试使用三元运算符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。
我写这个时会出现一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢
答案 0 :(得分:3)
有两个原因你不能这样做:
您不能仅使用任何独立表达作为声明。与某些语言(例如JavaScript)不同,Java没有“表达式语句”的一般概念,只有一些表达式也允许作为语句(如方法调用)。
条件运算符必须有结果,但如果您的方法是void
,则它们不会产生结果。
保持if
/ else
。
附注:一系列带有if
的{{1}} / else
往往会提出一个设计问题,可能会以更清洁的方式解决。