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

时间:2016-11-10 18:48:54

标签: java lambda rx-java retrolambda

有人可以解释一下,为什么两个的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();

1 个答案:

答案 0 :(得分:4)

我没有在java中使用RX,但请注意,String::valueOf是一个静态(也称为未绑定)函数,而String::trim是一个非静态(也称为绑定)函数,间接this参数。所以,实际上,这两个函数都采用单个参数。在Java中,它并不像Python中那样可见。