Kotlin has support for SAM (Single Abstract Method) Interfaces as Functions (i.e. Java 8 Lambdas). So you could use Kotlin in RxJava without this adaptor
Observable.create(OnSubscribeFunc<String> { observer ->
observer!!.onNext("Hello")
observer.onCompleted()
Subscriptions.empty()
})!!.subscribe { result ->
a!!.received(result)
}
In RxJava 0.17.0 version a new Subscriber type was included
Observable.create(object:OnSubscribe<String> {
override fun call(subscriber: Subscriber<in String>?) {
subscriber!!.onNext("Hello")
subscriber.onCompleted()
}
})!!.subscribe { result ->
a!!.received(result)
}
(Due to a bug in Kotlin's compiler you can't use SAM with OnSubscribe)
This adaptor exposes a set of Extension functions that allow a more idiomatic Kotlin usage
{(subscriber: Subscriber<in String>) ->
subscriber.onNext("Hello")
subscriber.onCompleted()
}.asObservable().subscribe { result ->
a!!.received(result)
}
Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.
Example for Maven:
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxkotlin</artifactId>
<version>x.y.z</version>
</dependency>
and for Ivy:
<dependency org="io.reactivex" name="rxkotlin" rev="x.y.z" />
and for Gradle:
compile 'io.reactivex:rxkotlin:x.y.z'