有人可以解释一下,为什么两个的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();
答案 0 :(得分:4)
我没有在java中使用RX,但请注意,String::valueOf
是一个静态(也称为未绑定)函数,而String::trim
是一个非静态(也称为绑定)函数,间接this
参数。所以,实际上,这两个函数都采用单个参数。在Java中,它并不像Python中那样可见。