相关疑难解决方法(0)

kotlin中的Dagger 2静态提供程序方法

对于最近版本的匕首2,所做的改进之一是具有静态提供方法的可能性.简单地说:

@Provides
static A providesA() {
  return A();
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何在kotlin做这件事?我试过了

@Module
class AModule {
  companion object {
    @JvmStatic
    @Provides
    fun providesA(): A = A()
  }
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

@Provides methods can only be present within a @Module or @ProducerModule
Run Code Online (Sandbox Code Playgroud)

我猜这里有同伴对象,但是我对Kotlin很新,我不确定如何做到这一点.它甚至可能吗?

谢谢!

kotlin dagger-2

46
推荐指数
5
解决办法
8486
查看次数

匕首的范围2

我可能错过了一些东西,但我认为像@Singleton这样的Scopes用来定义"范围生命周期".

我在Android应用程序中使用Dagger 2(但我不认为这个问题与Android有关).

我有1个模块:

@Module public class MailModule {

  @Singleton @Provides public AccountManager providesAccountManager() {
    return new AccountManager();
  }

  @Singleton @Provides public MailProvider providesMailProvider(AccountManager accountManager) {
    return new MailProvider(accountManager);
  }
}
Run Code Online (Sandbox Code Playgroud)

我有两个不同的组件,@Singleton范围:

@Singleton
@Component(modules = MailModule.class)
public interface LoginComponent {

  public LoginPresenter presenter();
}


@Singleton
@Component(
    modules = MailModule.class
)
public interface MenuComponent {

  MenuPresenter presenter();

}
Run Code Online (Sandbox Code Playgroud)

两者都有,MenuPresenter并且LoginPresenter有一个@Inject构造函数.虽然MenuPresenter期望MailProvider作为参数,但LoginPresenter需要AccountManager:

  @Inject public MenuPresenter(MailProvider mailProvider) { ... }

  @Inject public LoginPresenter(AccountManager …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

26
推荐指数
2
解决办法
1万
查看次数

标签 统计

dagger-2 ×2

android ×1

java ×1

kotlin ×1