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 中那样可见。
谁能解释一下,为什么 的 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 中那样可见。