例えば、Observableのメソッド compose は以下の様に定義されています。
引数には ObservableTransformer 型の変数を渡すものと思いますが、これにラムダ式の関数を渡すことができるのは、なぜでしょうか。

@SuppressWarnings("unchecked")
@CheckReturnValue
@SchedulerSupport(SchedulerSupport.NONE)
public final <R> Observable<R> compose(ObservableTransformer<? super T, ? extends R> composer) {
    return wrap(((ObservableTransformer<T, R>) ObjectHelper.requireNonNull(composer, "composer is null")).apply(this));
}