是否有可能让lambda表达式捕获一个不是最终的变量?
我知道我的代码可以完美地工作,如果它可以捕获它们,目前我必须创建一个新的变量来复制我希望传递给lambda表达式的非final变量.
final SomeClass otherObj;
for(int i = 0; i < 10; i++) {
int a = i;
someObject.method(() -> otherObj.process(a, a+1))
}
Run Code Online (Sandbox Code Playgroud)
我想传入'i'而不是必须创建一个新的临时变量.
你可以用java8试试这个,
IntStream.range(0, 10).forEach(i ->{
someObject.method(() -> otherObj.process(i, i+1))
});
Run Code Online (Sandbox Code Playgroud)