Может кто-нибудь объяснить мне, как получилось как из lambdas можно заменить здесь ссылкой на метод?Как работают ссылки на методы в RxJava?
В 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();
Работа метода метода метода заключается в том, что, например, методы типа 'trim',' Type :: instanceMethod' эквивалентны '(Type t) -> t.instanceMethod()'. (В более общем смысле, 'Type :: instanceMethod' is' (Type t, extraArgs) -> t.instanceMethod (extraArgs) '.) –