RxJava:onErrorReturn在返回Set时强制转换问题

时间:2019-09-06 17:34:37

标签: java rx-java2

在编写不同的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调用,则编译正常)。

有什么主意要正确吗?

1 个答案:

答案 0 :(得分:0)

该解决方案是在"styles": [ "src/styles.css", "node_modules/toastr/build/toastr.min.css" ], "scripts": [ "node_modules/jquery/dist/jquery.min.js", "node_modules/toastr/build/toastr.min.js" ] 链的尽头添加另一个map调用

cast

希望它可以帮助任何人...