显式类型参数Kotlin和RxJava

这是在Kotlin中使用RxJava与ThreadTransformer compose的唯一可能的方式吗? 我只是不喜欢compose功能中的<MyType>部分。 有没有可能省略它?

  override fun call(): Observable<MyType> { return Observable.just(getData()) .compose(threadTransformer.applySchedulers<MyType>()) } 

Observable.compose是Java中缺少扩展功能的解决方法。 在Kotlin中不需要使用Observable.compose ,因为它支持开箱即用的扩展功能:

 // default schedulers fun <T> Observable<T>.applySchedulers(): Observable<T> { return subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread()) } // custom transformer fun <T> Observable<T>.applySchedulers(transformer: ThreadTransformer): Observable<T> { return compose(transformer.applySchedulers<T>()) } override fun call(): Observable<MyType> { return Observable.just(getData()).applySchedulers() } 

根据弗拉基米尔Mironov的答案。 将其扩展到您的需求:

 //Observable fun <T> Observable<T>.applyIoScheduler() = applyScheduler(Schedulers.io()) fun <T> Observable<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation()) private fun <T> Observable<T>.applyScheduler(scheduler: Scheduler) = subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread()) //Single fun <T> Single<T>.applyIoScheduler() = applyScheduler(Schedulers.io()) fun <T> Single<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation()) private fun <T> Single<T>.applyScheduler(scheduler: Scheduler) = subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread()) //Completable //..