你如何使用Kotlin的Flowable.generate

时间:2017-10-16 00:27:48

标签: java kotlin rx-java2 kotlin-interop

这里是Flowable.generate的一次失败的存根尝试(类型注释比我通常使用的更多):

val xs: Flowable<String> = Flowable.generate<Int, String>(
  java.util.concurrent.Callable<Int> { -> 0 },
  io.reactivex.functions.BiConsumer<Int, String> { t1, t2 -> }
)

我想使用的Java签名是:

public static <T, S> Flowable<T> generate(Callable<S> initialState, final BiConsumer<S, Emitter<T>> generator)

我得到的错误是:

Error:(145, 12) None of the following functions can be called with the arguments supplied:
@CheckReturnValue @BackpressureSupport @SchedulerSupport public final fun <T : Any!, S : Any!> generate(p0: (() -> (???..???))!, p1: (((???..???), Emitter<(???..???)>!) -> Unit)!): Flowable<(???..???)>! defined in io.reactivex.Flowable
@CheckReturnValue @BackpressureSupport @SchedulerSupport public final fun <T : Any!, S : Any!> generate(p0: (() -> (???..???))!, p1: ((???, Emitter<(???..???)>) -> ???)!): Flowable<(???..???)>! defined in io.reactivex.Flowable
@CheckReturnValue @BackpressureSupport @SchedulerSupport public open fun <T : Any!, S : Any!> generate(p0: Callable<(???..???)>!, p1: BiConsumer<(???..???), Emitter<String!>!>!): Flowable<String!>! defined in io.reactivex.Flowable
@CheckReturnValue @BackpressureSupport @SchedulerSupport public open fun <T : Any!, S : Any!> generate(p0: Callable<Int!>!, p1: BiFunction<Int!, Emitter<(???..???)>!, Int!>!): Flowable<(???..???)>! defined in io.reactivex.Flowable

我应该为编译器提供什么

1 个答案:

答案 0 :(得分:2)

generate()的类型应为<String, Int>BiConsumer的类型应为<Int, Emitter<String>>

val xs: Flowable<String> = Flowable.generate<String, Int>(
        java.util.concurrent.Callable<Int> { -> 0 },
        io.reactivex.functions.BiConsumer<Int, Emitter<String>> { t1, t2 ->  }
)