我正在尝试为返回 RxJava
Maybe<?>
对象的方法创建注释。
因此,在 MethodInterceptor
方法中的 intercept
类中,我尝试访问从 Maybe 对象获取的错误,拦截方法如下:
public class myInterceptor implements MethodInterceptor<Object, Object> {
@Override
public Object intercept(MethodInvocationContext<Object, Object> context) {
Object result = context.proceed(this);
if (result instanceof Maybe) {
Flowable.fromCallable(() -> ((Maybe<?>) result).doOnError(this::logError)).subscribeOn(Schedulers.io());
}
return result;
}
}
这里
this::logError
从来没有被调用过,我的方法写好了
public Maybe<Optional<?>> getInfos(String url) {
return httpClient.exchange(
HttpRequest.GET(url)
.contentType(MediaType.APPLICATION_JSON),
String.class).firstElement().map(response -> {
/* Do something*/
}).doOnError(throwable -> {
throw new ApiException("Get Infos API message : " + throwable.getMessage();
});
});
}
你的代码没有任何意义。我想您想增加方法调用的 Maybe 结果,对吗?
首先,通过 fromCallable 捕获它是行不通的,你只需传递 Maybe 而不用它做任何事情。其次,您根本不返回增强序列。
所以,试试这个:
public class myInterceptor implements MethodInterceptor<Object, Object> {
@Override
public Object intercept(MethodInvocationContext<Object, Object> context) {
Object result = context.proceed(this);
if (result instanceof Maybe) {
return ((Maybe<?>) result)
.doOnError(this::logError)
.subscribeOn(Schedulers.io());
}
return result;
}
}