url的java注释 - 用例是什么?

时间:2015-06-11 00:01:42

标签: java android annotations retrofit dagger-2

我试图弄清楚在我继承的代码中创建的注释是什么。

以下是每个代码的注释定义:

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。

1 个答案:

答案 0 :(得分:0)

我终于找到了发生了什么,我想分享。当单独的类型无法识别提供者时,Dagger有两种方法可以帮助。使用@named或@Qualifier注释。 @named注释可以用作默认值,但如果要创建自己的注释以识别提供者,可以使用@Qualifier。

所以在我提供的示例中,@ BaseURL只不过是一个附加到提供者的@Named标记。他们做同样的事情,而不是使用"命名"由匕首提供,你可以自己做。资格部分下的文档为here