【发布时间】:2018-10-01 08:07:57
【问题描述】:
我不确定 Dagger2 的@Bind annotation. 的目的
根据我在网上阅读的内容,我仍然不清楚,但这里有一个例子:
@Module
public abstract class HomeModule {
@Binds
public abstract HomePresenter bindHomePresenter(HomePresenterImp
homePresenterImp);
}
类定义如下所示:
public interface HomePresenter {
Observable<List<User>> loadUsers();
}
public class HomePresenterImp implements HomePresenter {
public HomePresenterImp(){
}
@Override
public Observable<List<User>> loadUsers(){
//Return user list observable
}
}
如果我可以使用提供注释,为什么我需要使用@Binds,如下所示:
@Provides
public HomePresenter provideHomePresenter() {
return new HomePresenterImp();
}
@Binds 而不是 @Provides 的用例是什么?如果我使用@Binds,我还需要在我的应用组件中声明它吗(当我使用@Binds 时它是一个抽象类)?
【问题讨论】:
-
如果你想将
CustomActivity绑定到AppCompatActivity,这只能使用Binds注释来实现 -
@SamuelEminet 感谢您的回复。你能举一个例子,它是如何不能用提供来完成的,以及它是如何用绑定来完成的。我仍然很困惑,在这种情况下你有什么约束力?匕首是假设绑定依赖项,你为什么建议将 CustomActivity 绑定到 AppCompatActivity