如何在lambda表达式中将我的对象设置为另一个对象?我有错误
lambda表达式中使用的变量应为final或有效为final
使用以下代码:
public MyObj myFun(MyObj o) {
MyObj obj = null;
myObjList.stream().filter(o -> ...).forEach(o -> {
// I do some stuff here
// I need here set obj to o, but I got error
obj = o;
});
return myObj; // I need return found obj or null;
}
Run Code Online (Sandbox Code Playgroud)
您不能分配o给外部变量。但您可以将其作为流处理的结果返回。使用map而不是forEach并o从映射器返回。然后执行- findAny或findFirst将给您一个Optional<MyObj>。最后,执行操作orElse(null)以返回找到并处理的对象,或者null如果找不到则返回。
MyObj obj = myObjList
.stream()
.filter(o -> ...)
.map(o -> {
// I do some stuff here
// I need here set obj to o, but I got error
return o;
})
.findAny()
.orElse(null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |