2 разных объекта одного класса с кинжалом

Мне нужен модуль, чтобы вернуть 2 разных объекта Модернизация как сделать так, чтобы компонент различал эти объекты Retrofit?

Модернизация кода

@Provides
public Retrofit provideRetrofit(Context context, OkHttpClient okHttpClient, Gson gson) {
    return new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create(gson))
            .baseUrl("google.com"))
            .client(okHttpClient)
            .build();
}

объекты имеют различие только в .baseUrl ()

0
0
17
1

Ответы 1

Для зависимостей с одним и тем же классом вы можете использовать @Named:

@Provides @Named("foo") String provideFoo() {
    return "foo string";
}

Ввести:

public class SomeClass {
    @Inject @Named("foo") String fooString;

    @Inject public SomeClass() {
        System.out.println("value of fooString is " + fooString);
    }
}

Ваш случай:

@Provides @Named("google")
public Retrofit provideRetrofit(Context context, OkHttpClient okHttpClient, Gson gson) {
    return new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create(gson))
            .baseUrl("google.com"))
            .client(okHttpClient)
            .build();
}

@Provides @Named("so")
public Retrofit provideRetrofit(Context context, OkHttpClient okHttpClient, Gson gson) {
    return new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create(gson))
            .baseUrl("stackoverflow.com"))
            .client(okHttpClient)
            .build();
}

Другие вопросы по теме