我有这个代码:
Task.doTask(new Runnable(){
int bound = 0;
@Override
public void run(){
switch (bound){
case 0:
break;
case 1:
finishTask();
break;
}
bound++;
}
});
我可以将启动
int
绑定到其中,并轻松地将其用作进度条 Task.doTask(() ->{
int bound = 0;
switch (bound){
case 0:
break;
case 1:
finishTask();
break;
}
bound++;
});
但是使用lambda时,我无法启动绑定,因此它始终为
0
; 最佳答案
这是因为lambda的主体在传递给run
方法的Runnable
实例内部定义了doTask
方法。
我不会称其为限制-lambda只是传递一方法类实例的语法简写。
如果需要成员变量,请使用旧方法,如第一个示例中那样。