Java 如何将lambda用于自定义SingleObserver
我有一个定制的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
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);