将“ condition?expr1:expr2”链转换为“ if”链

时间:2019-08-03 13:03:07

标签: java if-statement ternary-operator

是否有任何自动工具将condition ? expr1 : expr2链转换为可读性更高的“ if”链?

我在Netbeans中使用Java。

例如:

super(dao == null || (dao.isX.get() != null && dao.isX.getBoolean()) ? (isY ? "String1" : (isZ ? "String2" : (isA ? String3 : "String4"))) : "String5", BoxLayout.y());

注意:我可以手动完成此操作,但是当我发现condition ? expr1 : expr2的复杂链时,我需要一个自动工具来避免错误

2 个答案:

答案 0 :(得分:3)

super(whatever);应该始终是第一行,您的三元运算符是一种设计解决方案,您无法将其重构为if s链(除非您将其包装为Andy {{3 }}。

无论表达式多么复杂,大多数现代IDE都可以将三元运算符转换为if语句。

我检查了我的IDEA,进行了三级三元操作

suggested

如果您没有类似的功能,请寻找插件,或考虑切换到更高级的环境。

答案 1 :(得分:1)

super(...)(或this(...))始终必须是构造函数中的第一条语句,因此您不能在其中使用if链。

您似乎需要提取一种方法:

static String method() {
  // Chain of if statements.
}

然后从构造函数中调用它:

super(method(), BoxLayout.y());