Set<Malfunction> malfunctions= ...
for (final String guideword : guidewords) {
Malfunction malf = malfunctions.stream()
.filter(m -> m.getGuideword().equals(guideword))
.collect(Collectors.toList())
.get(0);
当我避免使用guideword
变量,但使用硬编码值时,例如“some_reasonable_string”一切正常。
如果我使用循环中的guideword
,则会出现问题:发生故障中有一个Set<Hazard>
并且应该填写 malf
答案 0 :(得分:2)
您无法从lambda访问循环变量,因为它不是最终的。一种解决方案是在循环中获取它的最终副本。
for (String guideword : guidewords) {
// Add this.
final String thisGuideWord = guideword;
Malfunction malf = malfunctions.stream().filter(m ->
m.getGuideword().equals(thisGuideWord))
.collect(Collectors.toList()).get(0);
然而,正如GhostCat所指出的,这里可能存在一个更基本的问题。