Vert-x RxJava Карта реализации Single не совпадает с аргументом HttpResponse :: body - PullRequest
0 голосов
/ 26 ноября 2018

Привет, я сейчас нахожусь в vertx rxjava и обнаружил, что могу понять, почему интерфейс ниже может быть реализован с помощью HttpResponse.body.

Это использование интерфейса карты

Single<JsonObject> s1 = request1.rxSend().map(HttpResponse::body);

Если мы видим, что реализация Single для карты имеет вид

public final <R> Single<R> map(Func1<? super T, ? extends R> func)

, то есть Func1 - это функциональный интерфейс с подробностями ниже

public interface Func1<T, R> extends Function {
    R call(T t);
}

Интерфейс позволяет метод, который принимает 1 входной аргумент,и вернуть тип значения R. В то время как подробности реализации HttpResponse.Body приведены ниже

public T body() { 
    if (cached_6 != null) {
      return cached_6;
    }
    T ret = (T)__typeArg_0.wrap(delegate.body());
    cached_6 = ret;
    return ret;
  }

Как мы видим, реализация не принимает аргументов и возвращает значение.Почему он совместим с интерфейсом карты?Пожалуйста, просветите меня.Спасибо

1 Ответ

0 голосов
/ 26 ноября 2018

Nevermind.Когда я попытался изменить ссылку на метод на лямбду, я выяснил причину.Выход rxSend - Single.Поэтому карта будет повторяться / выполняться с объектом HttpResponse внутри нее.Глупый вопрос, вперед!

...