gpt4 book ai didi

java - RxJava : onErrorReturn cast problem when it returns a Set

转载 作者:行者123 更新时间:2023-12-02 00:55:00 25 4
gpt4 key购买 nike

当我编写不同的 RxJava 运算符时,我遇到了转换问题,

这是我的方法:

public Single<Set<User>> doWork() {
return calculate() //
.map(...) //
.collect(HashSet<User>::new, Set::add) //
.onErrorReturn(err -> {

return new HashSet<User>();
}).cast(Set.class);
}

这段代码实际上可以在 Eclipse 中编译并运行良好,但是当使用 Maven 构建时,会出现以下编译错误:

Compilation failure incompatible types: cannot infer type-variable(s) U
[ERROR] (argument mismatch; java.lang.Class<java.util.Set> cannot be converted to java.lang.Class<? extends java.util.Set<com.util.user.User>>

我把.cast(Set.class)因为否则 Eclipse 将无法编译它。

我似乎无法满足编译要求,所以我可能会返回 Set<User>正确(如果我删除最后一个 onErrorReturn 调用,则它可以正常编译)。

知道如何正确转换吗?

最佳答案

解决方案是在链的末尾添加另一个 map 调用,而不是 cast

public Single<Set<User>> doWork() {
return calculate() //
.map(...) //
.collect(HashSet<User>::new, Set::add) //
.onErrorReturn(err -> {

return new HashSet<User>();
}).map(user -> user);
}

希望对大家有帮助...

关于java - RxJava : onErrorReturn cast problem when it returns a Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57826412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com