我正在迁移到新的匕首android 2.11
所有设置都基于Google蓝图:MVP-Dagger.但我遇到此错误:
Error:(22, 57) error: @Binds methods must have only one parameter
whose type is assignable to the return type
在这一行:
@ActivityScoped @Binds abstract PresenterFactory<MainContract.Presenter> provIDePresenterFactory(MainPresenter presenter);
主持人:
@ActivityScopedpublic class MainPresenter extends BasePresenterImpl<MainContract.VIEw> implements MainContract.Presenter { public MainPresenter(String s) {..} ... }
有人知道如何解决这个问题吗?谢谢.
解决方法:
错误消息解释了所有内容:
@Binds methods must have only one parameter whose type is assignable to the return type
你的@Binds方法有一个MainPresenter参数.这不能分配给返回类型PresenterFactory< MainContract.Presenter>.换句话说,MainPresenter不是PresenterFactory< MainContract.Presenter>的实例.
@Binds方法的正确语法如下:
@Bindsabstract Abstraction bindAbstration(Concretion concretion)
其中凝固是抽象的一个例子.
或者,在Kotlin:
@Bindsabstract fun bindAbstraction(concretion: Concretion) : Abstraction
@Binds方法并不神奇.它们绑定一个类型(例如,一个接口)和Dagger已经知道如何提供的那种类型的实现.
更新
您可以使用以下步骤将@ProvIDes转换为@Binds:
>确保MainPresenter具有使用@Inject注释的显式构造函数,并且Dagger 2可以在构造函数中提供依赖项.
>写:
@Bindsabstract MainContract.Presenter bindPresenter(MainPresenter mainPresenter);
总结 以上是内存溢出为你收集整理的java – @Binds方法必须只有一个参数,其类型可赋值给返回类型全部内容,希望文章能够帮你解决java – @Binds方法必须只有一个参数,其类型可赋值给返回类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)