显式类型参数Kotlin和RxJava

Eug*_*ene 4 kotlin rx-java

这是使用RxJava的唯一可能的方式composeThreadTransformer在科特林?我只是不喜欢功能<MyType>部分compose.有可能省略吗?

  override fun call(): Observable<MyType> {
    return Observable.just(getData())
        .compose(threadTransformer.applySchedulers<MyType>())
  }
Run Code Online (Sandbox Code Playgroud)

Vla*_*nov 21

Observable.compose是Java中缺少扩展函数的一种解决方法.没有必要Observable.compose在Kotlin中使用,因为它支持开箱即用的扩展功能:

// 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()
}
Run Code Online (Sandbox Code Playgroud)