У меня нет большого опыта работы с io.reactivex, но я давно работаю с Java.
Я изучаю некоторый существующий код, используя io.reactivex, гдеразработчики добавили множество аннотаций «SuppressWarnings».Я предпочитаю не иметь их вообще, даже если я не могу разрешить предупреждение.Я хотел бы посмотреть, можно ли хотя бы некоторые конкретные примеры предупреждений в коде io.reactivex убрать, надеюсь, за счет упрощения кода.
Я привожу здесь выдержку из метода:
Single<SinglePaymentResponse> singleResponseHolder = Single.zip(vcc3Response, vcc4Response,
(response1, response2) -> {
SinglePaymentResponse singlePaymentResponse = new SinglePaymentResponse();
Map<String, ClientResponse<ResponseEntity>> combinePaymentResponse = new HashMap<>();
combinePaymentResponse.put("VCC3Response", response1);
combinePaymentResponse.put("VCC4Response", response2);
singlePaymentResponse.setCombinePaymentResponse(combinePaymentResponse);
return singlePaymentResponse;
});
Single<SinglePaymentResponse> resp = singleResponseHolder // warning 1
.doOnSuccess(r -> log.info("CheckoutComponent:Payment Successfully finished validatePaymentInfo"))
.doOnError(e -> log.error("CheckoutComponent:Payment An ERROR occurred during validatePaymentInfo.", // warning 2
e));
return singleResponseHolder.blockingGet();
В этом блоке кода есть два предупреждения: одно, которое мне дает Eclipse, и другое, которое мне дает SonarQube.
Предупреждение 1 от Eclipse говорит мне, что «resp» никогда не используется.Я, конечно, мог бы удалить переменную, но тогда я делаю вызов, возвращаемое значение которого не используется.
Предупреждение 2 говорит: «Возвращаемое значение io.reactivex.Single.doOnError (Consumer) игнорируется в ...".
Этот на самом деле несколько озадачивает.Из того, что я вижу, возвращаемое значение из "doOnError ()" присваивается "resp" (который затем не используется, но это другая проблема).
Мне кажется, что весь этот блок с предупреждениямидолжно быть проще, но я не уверен, как лучше это сделать.