5 개의 버튼이 있으며 아래 코드 에서처럼 초기화 작업을 수행하기 위해 반복해야합니다. 그러나, Java는 내가 ScreenFactory.produce() 함수에 전달하는 것을 막는다. 왜냐하면 내가 읽었던 클로저 문제로 인해 최종 함수가 아니기 때문이다. 그 이후로는 루프의 증가를 막을 수 없으므로 최종으로 만들 수 없습니다. 해결 방안은 무엇인가?java closure 해결 방법
for(int i = 0; i < 5; ++i) {
levelButtons[i].setAction(ActionType.GENERAL_ACTION, new GameAction() {
@Override
public void execute(int screenID) {
Game.instance.changeScreen(ScreenFactory.produce(ScreenFactory.GAME_SCREEN, i));
}
});
TouchHandler.instance.register(levelButtons[i]);
}
간단한 해결 방법은 당신의 폐쇄 내부 최종 변수를 생성하고 그것을'의 값을 할당하는 것은 –
@HunterMcMillen을 i' : 게시물을 내가 답변으로 t ... –
나는 어떻게 그것을 나에게 할당하겠습니까? 동일한 문제 : 나는 최종적이 아닙니다 – wirate