【问题标题】:java annotation for url - what is use case?url的java注释 - 什么是用例?
【发布时间】:2015-06-11 00:01:42
【问题描述】:

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

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

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。

【问题讨论】:

  • 注释什么也不做。它在其他地方使用。使用您的 IDE 查找对其的所有引用。
  • 这是我找到的仅有的两个参考。如果您认为代码本身没用,我倾向于它什么都不做。
  • 我认为您可以在 gradle.build 脚本中找到注释处理库。
  • 我想知道它是否与改造有关。也许有一些自定义注释。 @Jake Wharton,有什么想法吗?

标签: java android annotations retrofit dagger-2


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多