我希望能够做到这样的事情:
for(i = 0; i < 10; i++) {
//if any button in the array is pressed, disable it.
button[i].setOnAction( ae -> { button[i].setDisable(true) } );
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个错误说"local variables referenced from a lambda expression must be final or effectively final"
.我怎么还能像上面的代码那样做(如果可能的话)?如果无法完成,应该做些什么来获得类似的结果呢?
正如错误消息所述,从lambda表达式引用的局部变量必须是最终的或有效的final("有效最终"意味着编译器可以使它最终为您).
简单的解决方法:
for(i = 0; i < 10; i++) {
final int ii = i;
button[i].setOnAction( ae -> { button[ii].setDisable(true) } );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1616 次 |
最近记录: |