我需要更改从过滤器获取的值
.stream()
.filter(profile -> profile.getValue().equals("test"))
.findFirst()
.map(profile -> profile.setProperty(true))
我得到了不兼容的类型:推断的类型不符合上限,谢谢
答案 0 :(得分:4)
.map(profile -> profile.setProperty(true))
不正确; 如何这是不正确的,如何解决它取决于您。
map
期望传递给它的lambda返回一个 new 值,而不是修改现有值。您可以将property
设置为true来创建新值,也可以使用ifPresent
代替map
来就地更改现有值。
答案 1 :(得分:0)
如果有人为此而苦苦挣扎,这就是使用ifPresent的方法(如上所述):
.stream()
.filter(profile -> profile.getValue().equals("test"))
.findFirst()
.ifpresent(profile -> profile.setProperty(true))