强制Java lambda表达式捕获Java中的非final变量

Pap*_*sar 2 java lambda final

是否有可能让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'而不是必须创建一个新的临时变量.

Cod*_*roc 6

你可以用java8试试这个,

IntStream.range(0, 10).forEach(i ->{
   someObject.method(() -> otherObj.process(i, i+1))
});
Run Code Online (Sandbox Code Playgroud)