我什至不知道此代码即使能正常工作也不会做任何事情,但是我不知道该怎么做才能摆脱“从内部类引用的局部变量必须是最终的或实际上是最终的”错误消息,该错误消息在以“ 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/

10-11 04:09