我陷入了这些代码行,并且不知道如何改变它。我的教授让我这样做,说,"不要使用instanceof
或break
,除了在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());
}
}
答案 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) {
}
}