Необязательно ли использовать @Inject для всех конструкторов в Dagger2? - PullRequest
0 голосов
/ 14 декабря 2018

Почему некоторые люди используют @Inject для конструктора классов, а некоторые другие не используют эту аннотацию для конструктора.Необязательно ли использовать это?

1 Ответ

0 голосов
/ 14 декабря 2018

Нет необходимости, если вы предоставляете экземпляр самостоятельно:

//without @Inject
class SomeInstance contructor(...): SomeInstanceInterface{}

@Module
class Module{
  @Provides()
  fun provide():SomeInstanceInterface {
    return SomeInstance(...)
  }
}

Но если вы хотите, чтобы Dagger создал экземпляр для вас, вам нужно пометить конструктор @Inject и попросить Dagger создать экземпляры:

@Module
class Module{
  @Provides()
  fun provide(inst: SomeInstance):SomeInstanceInterface = inst
}

или

@Component
interface Component{
  fun someInstance():SomeInstanceInterface
} 
...