Vert-x Single的RxJava Map实现与HttpResponse :: body参数不匹配

时间:2018-11-26 04:08:08

标签: vert.x reactive

您好,我目前正在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 :(得分:0)

没关系。当我尝试将方法引用更改为lambda时,我清楚了原因。 rxSend输出为Single。因此,映射将使用其内部的HttpResponse对象进行迭代/执行。愚蠢的问题,向前!