RxJava 中的方法引用是如何工作的?

How do method references in RxJava work?

谁能解释一下,为什么 的 lambda 可以在这里用方法引用替换?

在 RxJava 中,map() 接受一个类型为 Func1<T, R> 的参数,其注释表明它是 "Represents a function with one argument"。因此我完全理解为什么 valueOf(Object) 在这里工作。但是 trim() 根本不需要 参数

那么这到底是如何工作的呢?

Observable.just("")
    .map(s -> String.valueOf(s))  //lambdas
    .map(s -> s.trim())           //

    .map(String::valueOf)         //method references
    .map(String::trim)            //
    .subscribe();

我没有在 java 中使用 RX,但请注意,String::valueOf 是一个静态(又名未绑定)函数,而 String::trim 是一个非静态( aka bound) 具有间接 this 参数的函数。所以,事实上,两个函数都接受一个参数。例如,在 Java 中它不像在 Python 中那样可见。