[英]Execute Code Between If and Else-if Statement in Java
我得到了这个代码:
if (conditionX) {
doX();
}
else if (conditionY) {
boolean isSomethingTrue = findOutIfSomethingIsTrue();
if (anotherConditionIsTrue) {
doY();
}
}
XYZPojo xyzPOJO = getXYZPOJO();
else if (xyzPOJO.getValueX().contains("xyz")) { // <- eclipse wants me to delete this 'else' statement
doXYZ();
}
当我运行此代码时,eclipse 会抱怨"Syntax error on token "else", delete this token"
。 我明白这是因为我有代码:
boolean conditionXYZ = checkIfXYZIsTrue();
在else if
语句之间。 但是我无法检查conditionXYZ
的值,除非我在else if
语句之间设置了conditionXYZ
的值。
我在 SO 上发现的唯一另一个类似问题是这个问题,它建议使用两个 if 语句。 问题是我不想conditionXYZ
如果要评估conditionY
是真实的。
我的另一个选择是使用两个if statements
并为每个 if 语句添加一个 return 语句。 但我认为这个解决方案在代码设计方面并不优雅。
我的第三个选择是在执行任何 if 语句之前checkIfXYZIsTrue()
,但这效率不高,因为如果conditionY
为真,我们不需要检查conditionXYZ
。
有任何想法吗?
提前致谢
Java 语法不允许在 if/else 链之间使用语句(不在它们各自的块中)。
您可以在else if
条件中执行您的第三个条件:
if (conditionX) {
doX();
} else if (conditionY) {
boolean isSomethingTrue = findOutIfSomethingIsTrue();
if (anotherConditionIsTrue) {
doY();
}
} else {
XYZPojo xyzPOJO = getXYZPOJO();
if (xyzPOJO.getValueX().contains("xyz")) {
doXYZ();
}
//reuse xyzPOJO
}
或者,最后一个else
仍然可以看起来像:
} else if (getXYZPOJO().getValueX().contains("xyz")){
doXYZ();
}
我知道这已经很老了,但看到没有人给出我想要的答案,我想我会发布我的答案,以防其他人在这里找到自己的方式寻找选项。
问题是我不希望在 conditionY 为真时对 conditionXYZ 进行评估。
在评估 if/else 语句上方的 conditionXYZ 之前,您可以使用三元运算符来检查 conditionY 是否为假。
//Sets xyzPOJO to getXYZPOJO() if conditionY isn't true, otherwise set xyzPOJO to null
XYZPojo xyzPOJO = conditionY!=true ? getXYZPOJO() : null;
if (conditionX) {
doX();
}
else if (conditionY) {
boolean isSomethingTrue = findOutIfSomethingIsTrue();
if (anotherConditionIsTrue) {
doY();
}
}
else if (xyzPOJO.getValueX().contains("xyz")) {
doXYZ();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.