我是匕首的新手,我正在使用Android的小应用程序进行研究。 我正在尝试使用Retrofit for REST请求通过http和https到两个服务器(dev和prod)。所以我在调试风格中有模块,其中:
@dagger.Module(overrides = true, library = true, complete = false)
public class DebugApiModule {
private static final String SRV = "dev.mysrv.com";
private static final String HTTP = "http://";
private static final String HTTPS = "https://";
public static final String API_URL = HTTP + SRV;
public static final String API_URL_SECURE = HTTPS + SRV;
@Provides @Singleton @Api String provideApi() { return API_URL; }
@Provides @Singleton @ApiSecure String provideApiSecure() { return API_URL_SECURE; }
}
这里我使用注释来区分两个字符串,但是我收到错误:
Error:(23, 50) error: Duplicate bindings for java.lang.String in override module(s) - cannot override an override:
com.myapp.common.api.DebugApiModule.provideApi()
com.myapp.common.api.DebugApiModule.provideApiSecure()
这段代码出了什么问题?
答案 0 :(得分:1)
@Api
和@ApiSecure
注释都需要使用javax.inject.Qualifier
进行注释,以便Dagger将其用作区分因素。
@Qualifier
@Retention(RUNTIME)
public @interface Api {
}