您好,我目前正在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;
}
我们可以看到该实现不接受任何参数并返回一个值。为什么它与地图界面兼容?请赐教。 谢谢
答案 0 :(得分:0)
没关系。当我尝试将方法引用更改为lambda时,我清楚了原因。 rxSend输出为Single。因此,映射将使用其内部的HttpResponse对象进行迭代/执行。愚蠢的问题,向前!