If i use Java i make something like this:
public class App extends Application {
private static AppComponent appComponent;
@Override
public void onCreate() {
super.onCreate();
initDagger();
}
private void initDagger(){
appComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.databaseModule(new DatabaseModule(this))
.networkModule(new NetworkModule())
.build();
}
public static AppComponent getAppComponent() {
return appComponent;
}
}
In Kotlin i wrote:
class App : Application() {
private lateinit var appComponent: AppComponent
override fun onCreate() {
super.onCreate()
initDagger()
}
private fun initDagger() {
appComponent = DaggerAppComponent.builder()
.appModule(AppModule(this))
.databaseModule(DatabaseModule(this))
.networkModule(NetworkModule())
.build()
}
companion object{
fun getAppComponent(): AppComponent {
return appComponent
}
}
}
But this companion object wouldn't work, because appComponent have to be local in object. How i have to make static method, that returns an AppComponent?
In your java version the appComponent is static too. Might want to move appComponent to the companion object in the Kotlin version to make it static too.