Добрый день есть функция rxJava и есть метод flatMap:
@Override
public Observable<AuthorizationEntity> confirmVerificationCode(String email,int verificationCode) {
return restClient.getVerificationApi(email,verificationCode)
.flatMap((Function<Response<ResponseBody>, Observable<AuthorizationEntity>>) responseBodyResponse -> {
Gson gson = new Gson();
AuthorizationEntity authorizationEntity = gson.fromJson(responseBodyResponse.body().string(), AuthorizationEntity.class);
authorizationEntity.setToken(responseBodyResponse.headers().get("MPOS_AUTH_TOKEN"));
return Observable.fromArray(authorizationEntity);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
как из этого flatMap вынесни ламбда в отдельный метод и использовать конструкцию вида this::method?
Все очень просто:
выносите лямбду в отдельный метод с соотвествующей сигнатурой
private static Observable<AuthorizationEntity> parse(Response<ResponseBody> responseBodyResponse)
в местах, где использовалась лямбда, пишите следующее:
.flatMap(MySuperClass::parse)
ps если в сигнатуре убрать static, то обращение к методу будет происходить через this, и вызов соответственно будет выглядеть так:
.flatMap(this::parse)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости