java在转换方法WebFlux中从lambda返回null或可为null的内容
在Spring WebFlux链中,我使用了一个映射操作,该操作有时可能会返回null,并得到一个警告:
Return null or something nullable from lambda in transformation mehtod
我相信当数据为空时,它实际上不会将输入映射到null
,但它会引发异常
处理这种情况的最佳方式是什么
映射可为空的方法:
public Pojo parseJson(String json) {
try {
// parse
return pojo;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我的反应链:
public Mono<Pojo> query(long id) {
Integer value = idMapper.getValue(id);
if (value != null) {
return repo.query(value)
Parse Method
|
v
.map(this::parse);
}
return null;
}
# 1 楼答案
在功能性/反应性的环境中工作时,您应该尽量避免所有空检查,并尝试从不从任何方法返回空
相反,当存在空返回的风险时返回
Optional<T>
,当返回Mono
的函数中出现错误时返回Mono.error
。或者如果你只是想跳过返回某个内容,就返回Mono.empty
通过使用optional,您可以将代码重写为更干净的代码
在这里,我返回Optionals和a,并决定返回Mono。空的还是单声道的。错误取决于发生了什么