我什至不知道此代码即使能正常工作也不会做任何事情,但是我不知道该怎么做才能摆脱“从内部类引用的局部变量必须是最终的或实际上是最终的”错误消息,该错误消息在以“ fireballRight [i]”开头的三行中显示。
Sprite[] fireballRight = new Sprite[50];
public void fireRight() {
for(int i = 0; i < 50; i++) {
new AnimationTimer() {
public void handle() {
fireballRight[i].setImage("puercosloco/fireballright.png");
rightx++;
fireballRight[i].setPosition(rightx, righty);
fireballRight[i].render(gc, 80, 55);
}
}.start();
}
}
任何指导将不胜感激,谷歌似乎没有帮助我这一点。
最佳答案
您尚未显示所有代码,但我怀疑添加了以下内容:
final int i0 = i;
在循环内部,并使用
i0
而不是i
作为数组的索引应该可以解决该错误。另外,正如@James_D所评论的那样,您还可以在匿名类之前添加
Sprite sprite = fireballRight[i];
并在sprite
方法内使用handle
。请注意,在这种情况下,对于Java 8+,
final
修饰符是可选的。关于java - 为什么会出现“从内部类引用的局部变量必须是最终的”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43849443/