如何将含instanceof的if语句替换为try...catch?技术求助
解决思路:用try...catch替代instanceof类型检查
我明白你现在的困境了——教授的限制确实有点棘手,不过用try...catch来替代instanceof的思路是可行的,咱们来一步步调整你的代码:
核心逻辑是利用强制类型转换失败会抛出ClassCastException的特性:尝试把当前button元素转为TreasureButton,如果转换成功,就执行setText操作;如果失败,捕获异常后直接跳过当前元素即可,完全避开instanceof的使用。
修改后的代码如下:
public void displayAllTreasures() { for (int i = 0; i < this.button.length; i++) { try { TreasureButton treasureButton = (TreasureButton) this.button[i]; treasureButton.setText(treasureButton.getDisplayText()); } catch (ClassCastException e) { // 非TreasureButton类型,直接跳过,无需额外操作 } } }
补充说明:
- 这里catch块不需要写任何逻辑,因为我们本来就只需要处理
TreasureButton类型的元素,非目标类型的元素直接跳过就好。 - 这段代码完全符合教授的要求:没有使用instanceof、break,也没用到switch(当然这里也不需要)。
内容的提问来源于stack exchange,提问作者JoeEx
相关产品推荐
相关产品推荐

