【发布时间】:2017-05-05 07:41:37
【问题描述】:
我正在尝试使用三元运算符 ?-: 将 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。
我在编写时遇到了一些语法错误。有人可以帮助或解释我错过了什么吗?提前致谢
【问题讨论】:
-
您不能将
voids 用作 ternar 运算符的一部分。只有两种相同的类型。 -
三元运算符不适用于 void 方法
-
"第二个或第三个操作数表达式调用 void 方法是编译时错误。" docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.25
-
使用嵌套三元运算不是一个好习惯..
-
您可以将您的类放入一个层次结构中,其中每个类都实现一个接口,每个类中所需的操作是一个覆盖。那是面向对象的编程,避免了随意反射的整个麻烦、脆弱和容易出错的行为。您真的根本不想使用反射。对于您在此处显示的内容,标准编程技术很有可能为您提供更好的服务。
标签: java if-statement ternary-operator