Мне нужен модуль, чтобы вернуть 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 ()
Для зависимостей с одним и тем же классом вы можете использовать @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();
}