Kann mir jemand erklären, wie kommt es, sowohl der Lambdas kann mit Methodenreferenzen hier ersetzt werden?Wie funktionieren Methodenreferenzen in RxJava?
In RxJava, map()
nimmt einen Parameter vom Typ Func1<T, R>
, dessen Kommentar heißt es, dass es "eine Funktion mit ein Argument". So verstehe ich völlig, warum valueOf(Object)
hier funktioniert. Aber trim()
dauert keine Argumente überhaupt.
Wie funktioniert das genau?
Observable.just("")
.map(s -> String.valueOf(s)) //lambdas
.map(s -> s.trim()) //
.map(String::valueOf) //method references
.map(String::trim) //
.subscribe();
Die Art, wie Methodenreferenzen arbeiten, ist, dass zum Beispiel Methoden wie 'trim',' Type :: instanceMethod' äquivalent zu '(Type t) -> t.instanceMethod()' sind. (Im Allgemeinen ist 'Type :: instanceMethod' '(Typ t, extraArgs) -> t.instanceMethod (extraArgs)'.) –