我正在尝试使用匕首限定符在我的Android应用程序中提供不同类型的OkHttpClient.Builder。例如,我有两个注释,即@Authorized和@WithTime,每个注释都应向客户端构建器添加一些拦截器。
我希望仅通过注释提供方法就能获得不同的构建器(添加不同的拦截器)。但是当我有多个注释时,我不知道该怎么做。
这是我以前只需要一个注释(@Authorized)时所做的事情。但是现在我可能需要更多类型的客户端,这是不可能的。
@Provides
@Singleton
@Authorized
OkHttpClient.Builder provideOkHttpClientBuilderWithAuthorization(...)
@Provides
@Singleton
OkHttpClient.Builder provideOkHttpClientBuilder(...)
您可以像这样访问它,这就是创建限定符的方法@Qualifier
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER,
AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
annotation class Authorized()
当您访问它时,您必须在这样的模块中注释您的提供者乐趣@JvmStatic
@Provides
@@YourPackagetoQualifier("Authorized")
OkHttpClient.Builder provideOkHttpClientBuilderWithAuthorization(...)