这段代码还是报错,找不到局部变量
时间: 2024-01-02 13:05:14 浏览: 203
如果还是报错,可能是因为在Lambda表达式中访问了`b`和`days`变量,但Lambda表达式中的变量作用域是局部的,无法访问外部变量,所以会报错。解决这个问题可以使用`AtomicInteger`和`AtomicBoolean`,这两个类可以在Lambda表达式中被访问,而且线程安全。改写后的代码如下所示:
```
AtomicInteger days = new AtomicInteger(0);
AtomicBoolean b = new AtomicBoolean(false);
Map<String, Integer> AuditMap = new HashMap<>();
if (auditNodeConfigVOS != null && auditNodeConfigVOS.size() > 0) {
auditNodeConfigVOS.forEach(auditNodeConfigVO -> {
AuditMap.put(auditNodeConfigVO.getApprovalStatus(), auditNodeConfigVO.getLimitTime());
if ("印发审计通知".equals(auditNodeConfigVO.getNodeName())) {
b.set(true);
}
if (b.get()) {
days.addAndGet(auditNodeConfigVO.getLimitTime());
}
});
}
```
在上面的代码中,我们使用了`AtomicInteger`和`AtomicBoolean`来代替`days`和`b`变量,`AtomicInteger`和`AtomicBoolean`提供了线程安全的自增和自减操作,而且可以在Lambda表达式中被访问。使用`AtomicInteger`和`AtomicBoolean`可以避免多线程访问时的冲突问题。
阅读全文