我试图弄清楚在我继承的代码中创建的注释是什么。
以下是每个代码的注释定义:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface BaseUrl {
}
然后使用dagger 2(Android的依赖注入框架),它使用如下:
//from a file called applicationModule.java
@Provides
@Singleton
Endpoint provideBaseURL(@BaseUrl String url) {
return getEndPointUrl(url);
}
我更关注@BaseUrl注释。它在这种情况下做了什么?
该项目使用Retrofit。
答案 0 :(得分:0)
我终于找到了发生了什么,我想分享。当单独的类型无法识别提供者时,Dagger有两种方法可以帮助。使用@named或@Qualifier注释。 @named注释可以用作默认值,但如果要创建自己的注释以识别提供者,可以使用@Qualifier。
所以在我提供的示例中,@ BaseURL只不过是一个附加到提供者的@Named标记。他们做同样的事情,而不是使用"命名"由匕首提供,你可以自己做。资格部分下的文档为here。