我有这个自定义的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);
}
...
}
所以我在 API 存储库接口类中使用以下代码:
@POST(ApiAddress.USER_LOGIN)
Single<Response<UserWithToken>> userLogin(@Body UserLogin_request userLogin_request);
我的问题是:如何更改此代码:
.subscribe(new SubscribeWithView<Response<UserWithToken>>(view) {
@Override
public void onSuccess(Response<UserWithToken> response) {
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
像这样对拉姆达?
apiRepository.userLogin(request)
.subscribe(new SubscribeWithView<Response<UserWithToken>>(view) {
response->{},e->{});
不,Java 仅支持"函数接口"的 lambda。基本上,这意味着您不能将 lambda 与多个方法一起使用来实现。
而不是改造单,你可以像这样使用Rxjava单曲:
您的界面 :
@GET("somehing")
Single<UserWithToken> getUserWithTokenFromServer(@Query("something") String something);
您的实施:
apiClient.getUserWithTokenFromServer("123456")
.subscribe(UserWithToken -> {
// handle data fetched successfully and API call completed
},Throwable::printStackTrace);