更改{if} statemets尝试... catch

时间:2018-05-12 04:09:41

标签: java

我陷入了这些代码行,并且不知道如何改变它。我的教授让我这样做,说,"不要使用instanceofbreak,除了在switch语句中。"我试图将其更改为try...catch语句。我一直卡住了。有帮助吗?这是我的代码:

   public void displayAllTreasures() 
{
    for (int i = 0; i < this.button.length; i++) 

    {     //This is what i am trying to change to try/catch
        if (this.button[i] instanceof TreasureButton)

            this.button[i].setText(this.button[i].getDisplayText());
    }
}

2 个答案:

答案 0 :(得分:2)

您可以使用类型转换。如果instanceof要返回false,则try / catch将导致类强制转换异常:

try {
    TreasureButton buttonI = (TreasureButton) this.button[i];
    buttonI.setText(this.button[i].getDisplayText());
} catch (ClassCastException cce) {
    //do else
}

答案 1 :(得分:2)

如果您不知道instanceof数组的确切类型,则只需使用button,在这种情况下,您可以使用instanceof来检查是否可以安全投射。既然你没有演员,我不明白为什么你这里有instanceof。但假设你 意味着 来施展;然后你可以在try-catch中盲目地这样做,如果它不合法就抓住ClassCastException。像,

for (int i = 0; i < this.button.length; i++) {
    try {
        TreasureButton tb = (TreasureButton) this.button[i];
        tb.setText(tb.getDisplayText());
    } catch (ClassCastException cce) {
    }
}