In Java, an interface with a single abstract method is called a functional interface. This means a functional interface in Java is SAM in Kotlin.
At the time of writing, when Kotlin invokes Java libraries with functional parameters, a problem may rear its head in RxJava 2.x when several overloads of the method with functional parameters are introduced. Kotlin does not have this issue when invoking Kotlin libraries, but it does with Java libraries. When there are multiple argument overloads for different functional SAM types on a given Java method, Kotlin gets lost in its inference and needs help. Until JetBrains resolves this issue, you will need to work around this either by being explicit or by using RxKotlin's helpers.
One of the most notorious examples is the zip() operator. Try to run the code as shown in the following example and you will...