Search code examples
javaandroidkotlindependency-injectionstatic-methods

How to make static methods in Kotlin


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?


Solution

  • 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.