java–@Binds方法必须只有一个参数,其类型可赋值给返回类型

java–@Binds方法必须只有一个参数,其类型可赋值给返回类型,第1张

概述我正在迁移到新的匕首android2.11所有设置都基于Google蓝图:MVP-Dagger.但我遇到此错误:Error:(22,57)error:@Bindsmethodsmusthaveonlyoneparameterwhosetypeisassignabletothereturntype在这一行:@ActivityScoped@BindsabstractPresenterFac

我正在迁移到新的匕首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方法必须只有一个参数,其类型可赋值给返回类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存