3

我试图弄清楚在我继承的代码中创建的注释的作用。

这是每个代码的注释定义:

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 注释。在这种情况下它做了什么?

该项目使用改造。

4

1 回答 1

0

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

因此,在我提供的示例中,@BaseURL 只不过是附加到提供程序的@Named 标记。他们做同样的事情,但不是使用匕首提供的“命名”这个词,你可以自己做。文档qualifier 部分下。

于 2015-07-16T18:56:12.450 回答