Java注解用于URL - 有什么使用场景?

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注释。在这种情况下它有什么作用?
该项目使用Retrofit。

3
注释本身没有任何作用,它在其他地方被使用。使用你的IDE查找所有对它的引用。 - Radiodef
这是我找到的唯二参考资料。如果你认为代码本身无用,那么我倾向于它什么也不做。 - j2emanue
我认为你可以在你的 gradle.build 脚本中找到注解处理库。 - Jiang YD
我在想这是否与Retrofit有关。也许是它的某些自定义注释。@Jake Wharton,你有什么想法吗? - j2emanue
1个回答

0

我终于找到了问题所在,现在想分享一下。Dagger有两种方法可以帮助当类型无法识别提供程序时。要么使用@Named注释,要么使用@Qualifier注释。@Named注释可以作为默认值使用,但如果您想创建自己的注释以识别提供程序,则可以使用@Qualifier。

因此,在我提供的示例中,@BaseURL只是一个@Named标签,用于附加到提供程序。它们的作用相同,但是您可以制作自己的标签,而不是使用Dagger提供的“Named”一词。文档在这里的限定符部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接