当我想使用lambda调用另一个Service.java中的方法,然后将其用作确定返回值的条件时。总是用lambda表示“意外的返回值”。我该如何退货?
public SortOrder transform(SortOrder sort, String abc) {
if (sort == null) {
return SortOrder.A;
} else if (sort.equals(SortOrder.B) && abc != null) {
return AnotherService.getString(abc)
.map(l -> l.ifPresent(m -> {
if (m.getName().equals("name")) {
return SortOrder.C; //ERROR: unexpected return value
}
return sort; //ERROR: unexpected return value
}));
} else {
return sort;
}
return sort;
}
答案 0 :(得分:1)
函数Optional.ifPresent
接受使用者,根本不允许其返回值。传递给ifPresent
的lambda必须具有void
返回类型。
最好不要为此部分使用lambda,而应写if (l.isPresent()) { ... }
。
如果您坚持使用功能样式,则可以编写l -> l.filter(m -> m.getName().equals("name")).map(l -> SortOrder.C).orElse(sort)
。