Dependency injection Dagger绑定实例问题的官方示例

Dependency injection Dagger绑定实例问题的官方示例,dependency-injection,annotations,dagger-2,Dependency Injection,Annotations,Dagger 2,我不熟悉匕首。我在“绑定实例”部分遵循了文档,下面是提供的示例: @Component(modules = AppModule.class) interface AppComponent { App app(); @Component.Builder interface Builder { @BindsInstance Builder userName(@UserName String userName); AppComponent build(); } }

我不熟悉匕首。我在“绑定实例”部分遵循了文档,下面是提供的示例:

@Component(modules = AppModule.class)
interface AppComponent {
  App app();

  @Component.Builder
  interface Builder {
    @BindsInstance Builder userName(@UserName String userName);
    AppComponent build();
  }
}
我的问题是这个
@UserName
来自哪里? 导致此代码块的解释如下

也许您的应用程序只接受一个参数,该参数表示您希望作为@UserName字符串注入的用户名。您可以将带注释的@BindsInstance方法添加到组件生成器中,以允许将该实例注入组件中

我无法解释这件事。有人能解释一下吗


谢谢

@Username
在本例中是一个限定符。如果您使用/注入一个普通的
字符串
,它会把事情弄得乱七八糟(因为
字符串
是一种比较常见的类型),但是与限定符
@Username字符串
结合使用会成为一个唯一的键


@Named(“foo”)
是包含的基本限定符,您可以使用,也可以创建自己的限定符,例如
@Username

关于如何创建自定义限定符的任何指南?@woodybird您可以将
@qualifier
添加到注释中。您链接的Dagger文档中也有一个示例