6

有人可以解释一下,为什么这两个lambda 都可以在这里替换为方法引用?

在 RxJava 中,map()接受一个类型为 的参数Func1<T, R>,其注释指出它“表示一个带有一个参数的函数”。因此,我完全理解为什么valueOf(Object)在这里工作。但完全没有争论trim()

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

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

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

1 回答 1

4

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

于 2016-11-10T18:55:55.730 回答