Grz*_* D. 6 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();
Run Code Online (Sandbox Code Playgroud)
我没有在 java 中使用 RX,但请注意,这String::valueOf是一个静态(又名未绑定)函数,而String::trim是一个具有间接参数的非静态(又名绑定)函数this。因此,事实上,这两个函数都采用单个参数。例如,在 Java 中,它不像在 Python 中那样可见。
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |