Как правильно вынести метод из flatMap?

222
18 июня 2018, 03:40

Добрый день есть функция 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?

Answer 1

Все очень просто:

  1. выносите лямбду в отдельный метод с соотвествующей сигнатурой

    private static Observable<AuthorizationEntity> parse(Response<ResponseBody> responseBodyResponse)
  2. в местах, где использовалась лямбда, пишите следующее:

    .flatMap(MySuperClass::parse)

ps если в сигнатуре убрать static, то обращение к методу будет происходить через this, и вызов соответственно будет выглядеть так:

.flatMap(this::parse)
READ ALSO
Как получить уникальное Id для девайса?

Как получить уникальное Id для девайса?

Как получить никальное id для device-a которое не будет изменяться даже после перепрошивки ?в котором я могу быть уверен на все 100 %это MacAdress,Imei...

199
Ошибка при вызове сервлета Tomcat + spring + hibernate + mysql

Ошибка при вызове сервлета Tomcat + spring + hibernate + mysql

Который раз уже пересоздаю приложение, появляется одно и то

205
Bitronix - cannot enlist more than one non-XA resource

Bitronix - cannot enlist more than one non-XA resource

Создал BitronixTransactionManager, чтобы делать распределенные транзакции в несколько БДКогда делаю insert в две БД, то все работает

210
Android RadioGroup isChecked

Android RadioGroup isChecked

как можно проверить выбран ли какой-нибудь radioButton в radioGroup при нажатии кнопки

196