Java 如何将lambda用于自定义SingleObserver

Java 如何将lambda用于自定义SingleObserver,java,android,lambda,rx-java,retrofit,Java,Android,Lambda,Rx Java,Retrofit,我有一个定制的SingleObserver类: public abstract class SubscribeWithView<T> implements SingleObserver<T>,Disposable { private WeakReference<RootView> rootView; /** * <p style="color:blue;">set view from presenter</p

我有一个定制的SingleObserver类:

public abstract class SubscribeWithView<T> implements SingleObserver<T>,Disposable {


    private WeakReference<RootView> rootView;


    /**
     * <p style="color:blue;">set view from presenter</p>
     *
     * @param rootView
     *{@link RootView}
     */

    public SubscribeWithView(RootView rootView) {
        this.rootView = new WeakReference<>(rootView);
    }


    ...
}
公共抽象类SubscribeThView实现了单观察者、一次性{
私有WeakReference根视图;
/**
*从演示者设置视图

* *@param-rootView *{@link RootView} */ 公共视图(根视图根视图){ this.rootView=新的WeakReference(rootView); } ... }
因此,我在API存储库接口类中使用以下代码:

@POST(ApiAddress.USER_LOGIN)
    Single<Response<UserWithToken>> userLogin(@Body UserLogin_request userLogin_request);
@POST(ApiAddress.USER\u登录)
单用户登录(@Body userLogin\u request userLogin\u request);
我的问题是:如何更改此代码:

.subscribe(new SubscribeWithView<Response<UserWithToken>>(view) {
                        @Override
                        public void onSuccess(Response<UserWithToken> response) {
                        }

                        @Override
                        public void onError(Throwable e) {
                            super.onError(e);
                        }
.subscribe(新订阅)视图(视图){
@凌驾
成功时公共无效(响应){
}
@凌驾
公共无效申报人(可丢弃的e){
super.onError(e);
}
像这样对lambda

apiRepository.userLogin(request)
                .subscribe(new SubscribeWithView<Response<UserWithToken>>(view) {
                    response->{},e->{});
apiRepository.userLogin(请求)
.subscribe(新订阅)视图(视图){
响应->{},e->{});

不,Java仅对“功能接口”支持lambda。基本上,这意味着您不能将lambda与多个方法一起使用来实现。

您可以像这样使用Rxjava single,而不是改装single:

您的界面:

    @GET("somehing")
   Single<UserWithToken> getUserWithTokenFromServer(@Query("something") String  something);

为什么不使用
subscribe(Consumer,Consumer)
让lambda捕获为您提供
视图,您可以从两个lambda访问该视图。
apiClient.getUserWithTokenFromServer("123456")
    .subscribe(UserWithToken -> {
        // handle data fetched successfully and API call completed
    },Throwable::printStackTrace);