Exception in thread "main" java.lang.Error: Unresolved compilation problem: Local variable sumWrapper defined in an enclosing scope must be final or effectively final
时间: 2023-10-14 22:21:51 浏览: 81
java 项目中遇到的错误
这个错误是因为在使用Lambda表达式时,变量需要是final或者effectively final的。
解决方法:
1. 将sumWrapper声明为final:
```
final Integer sumWrapper = new Integer(sum);
```
2. 不使用Lambda表达式,而是使用匿名内部类:
```
for (int i = 0; i < 1000; i++) {
new Thread(new Runnable() {
@Override
public void run() {
synchronized (sumWrapper) {
sumWrapper = sumWrapper + 1;
}
}
}).start();
}
```
这两种方法都可以解决这个错误。需要注意的是,第二种方法在语法上比较繁琐,但是在某些情况下可能更加灵活,可以根据实际情况选择使用哪种方法。
阅读全文